您的位置:首页 > 其它

List去除重复的元素

2016-09-03 22:25 295 查看
     有两种方法,一种是去重不带顺序的,一种是去重带顺序的。

/*
* 方法1:	无顺序
* Hastset根据hashcode判断是否重复,数据不会重复
*/
public static List<String> deleteDuplicate(List<String> list){
Set<String> set = new HashSet<String>(list);
list.clear();
list.addAll(set);
return list;
}

/*
* 方法2:带顺序
* 通过Hashset的add方法判断是否已经添加过相同的数据,如果已存在相同的数据则不添加
*/
public static List<String> deleteDuplicateWithOrder(List<String> list){

Set<String> set = new HashSet<String>();
List<String> newList = new ArrayList<String>();

Iterator<String> it = list.iterator();
while(it.hasNext()){
String str = (String)it.next();
if(set.add(str)){
newList.add(str);
}
}

list.clear();
list.addAll(newList);
return newList;
}


 

测试:

@Test
public void test1(){
List<String> list = new ArrayList<String>();
list.add("AAA");
list.add("BBB");
list.add("CCC");
list.add("DDD");
list.add("BBB");
list.add("DDD");
list.add("FFF");

//AAA,CCC,BBB,DDD,FFF,
list = deleteDuplicate(list);
}

@Test
public void test2(){
List<String> list = new ArrayList<String>();
list.add("AAA");
list.add("BBB");
list.add("CCC");
list.add("DDD");
list.add("BBB");
list.add("DDD");
list.add("FFF");

//AAA,BBB,CCC,DDD,FFF,
list = deleteDuplicateWithOrder(list);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: