需求:用户权限查看,页面显示权限树时缺少了一个分支
原因:二级权限带有一个三级权限,但具有了相同的二级权限,所以未能正常显示
解决:去除List中重复的权限数据
方式:
参考资料:[url]http://bbs.csdn.net/topics/390247210[/url]
1.List<Long>
2.List<Po>
Po类中具有编号或名称属性
总结:
[list]
[*][b]去除List中的重复数据,通过set集合的key为非重复值的原理[/b]
[/list]
示例:
原因:二级权限带有一个三级权限,但具有了相同的二级权限,所以未能正常显示
解决:去除List中重复的权限数据
方式:
参考资料:[url]http://bbs.csdn.net/topics/390247210[/url]
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]
[*][b]去除List中的重复数据,通过set集合的key为非重复值的原理[/b]
[/list]
示例:
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);
}
}
}