List list = new ArrayList();
list.add("张三,3");
list.add("张三,4");
list.add("张三,5");
list.add("李四,2");
list.add("王五,3");
list.add("马六,2");
list.add("马六,2");
如何把list的数据拼成一个如下一个stringbuffer的字符
张三:15个,李四:2个 ,王五:3个,马六:4个
list.add("张三,3");
list.add("张三,4");
list.add("张三,5");
list.add("李四,2");
list.add("王五,3");
list.add("马六,2");
list.add("马六,2");
如何把list的数据拼成一个如下一个stringbuffer的字符
张三:15个,李四:2个 ,王五:3个,马六:4个
这个需要先统计一下,可以先把list映射到map里,key为前面的名字,value为后面的数字之和
然后输出map
如果有序
直接遍历list,设置变量lastname,sum用于记载上一次的数据中的名字及次数之和
当本次名字与上次不同时,则输出lastname,sum;并更新lastname,sum=0
List list = new ArrayList();
list.add("张三,3");
list.add("张三,4");
list.add("张三,5");
list.add("李四,2");
list.add("王五,3");
list.add("马六,2");
list.add("马六,2");
Map<String ,Integer> map=new HashMap<String, Integer>();
for(Object i:list){
String[] split=((String)i).split(",");
if(split.length==2){
if(map.containsKey(split[0])){
map.put(split[0], map.get(split[0])+Integer.parseInt(split[1]));
}else{
map.put(split[0], Integer.parseInt(split[1]));
}
}
}
StringBuffer sb=new StringBuffer((map+"").replaceAll("\\{(.*?)=(\\d+)(,||$)\\}", "$1:$2个$3"));
System.out.println(sb);
(1)重写toString();
(2)用Iterator迭代List中的值
(3)StringBuffer sb = new StringBuffer(String str);