工作过程中,遇到了一个相对复杂的数据处理。一个list里套着list,还要去重显示。于是想到了java的迭代器--Iterator。
迭代器基础用法
1.使用方法 iterator()要求容器返回一个 Iterator。第一次调用Iterator 的next()方法时,它返回序列的第一个元素。
2.使用next()获得序列中的下一个元素。
3.使用hasNext()检查序列中是否还有元素。
4.使用remove()将上一次返回的元素从迭代器中移除。
代码解析
listGroup = groupService.findAllGroup(userID); //从后端传回数据
Set set = new HashSet(); //实例化一个hashset,set中不放重复的数据
for ( Group group:listGroup){ //遍历set,获取不重复的名字
set.add(group.getName());
}
Iterator it = set.iterator(); //单个遍历
List resultList = new ArrayList();
while (it.hasNext()){ //如果有下一个的话
String name = it.next().toString();
String str = null;
for (Group group:listGroup){
if(group.getName().equals(name)){
if(str==null){
str=group.getServiceName();
}else {
str=str+","+group.getServiceName(); //拼接字符串
}
}
}
List list = new ArrayList();
for(Group group:listGroup){
if(group.getName().equals(name)){ //判断名称是否相符
group.setServiceName(str);
list.add(group);
}
}
resultList.add(list.get(0));
}
modelMap.addAttribute("listGroup",resultList); //设置modelMap的一个属性叫listGroup