List去除重复的元素

时间:2023-03-09 13:03:51
List去除重复的元素

     有两种方法,一种是去重不带顺序的,一种是去重带顺序的。

	/*
* 方法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);
}