原因:二级权限带有一个三级权限,但具有了相同的二级权限,所以未能正常显示
解决:去除List中重复的权限数据
方式:
参考资料: http://bbs.csdn.net/topics/390247210
1.List<Long>
public static void removeDuplicate(List list) { HashSet h = new HashSet(list); list.clear(); list.addAll(h); System.out.println(list); }
2.List<Po>
Po类中具有编号或名称属性
public static void removeDuplicateWithOrder(List list) { Set<Long> set = new HashSet<Long>(); List<Po> newList = new ArrayList<Po>(); for (Iterator iter = list.iterator(); iter.hasNext();) { Po element = iter.next(); if (set.add(element.getId())) newList.add(element); } list.clear(); list.addAll(newList); }
总结:
- 去除List中的重复数据,通过set集合的key为非重复值的原理
示例:
import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; /** * List 集合去重 */ public class RemoveRepeatTestMain { /** * @param args */ public static void main(String[] args) { List<String> list = new ArrayList<String>(8); list.add("a"); list.add("b"); list.add("a"); list.add("c"); list.add("a"); list.add("d"); list.add("d"); list.add("a"); method1(list); method2(list); method3(list); method4(list); } /** * 方式1 * 两个集合,将原有元素放入新的集合中,并判断新的集合是否已包含加入的元素 * @param list */ public static void method1(List<String> list){ List<String> newList = new ArrayList<String>(list.size()); for(String str : list){ if(null != newList && newList.size() > 0 && !newList.contains(str)){ newList.add(str); }else if ( null == newList || newList.size() == 0 ){ newList.add(str); } } printList(newList); } /** * 利用 set.add 方法,若set中不含此元素,添加成功,返回TRUE,否则FALSE * @param list */ public static void method2(List<String> list){ List<String> newList = new ArrayList<String>(list.size()); Set<String> setTemp = new HashSet<String>(list.size()); for(String str : list){ if(setTemp.add(str)){ newList.add(str); } } printList(newList); } public static void method3(List<String> list){ List<String> newList = new ArrayList<String>(new HashSet<String>(list)); printList(newList); } public static void method4(List<String> list){ List<String> newList = new ArrayList<String>(list.size()); Set<String> set = new HashSet<String>(list.size()); set.addAll(list); newList.addAll(set); printList(newList); } public static void printList(List<String> list){ for(String str : list){ System.out.print(str); } } }