You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

112 lines
2.5 KiB

package com.woniu;
import org.junit.Test;
import java.util.*;
import java.util.stream.Collectors;
/**
* 面试官:怎么去除 List 中的重复元素?一行代码搞定,赶紧拿去用!
*/
public class TestList {
/**
* 3 个张三,2 个李强
*/
public List<String> initList = Arrays.asList(
"张三",
"李四",
"张三",
"周一",
"刘四",
"李强",
"李白",
"张三",
"李强",
"王五"
);
/**
* for 循环添加去重
*
* @author: 蜗牛
*/
public void remove1() {
List<String> list = new ArrayList(initList);
List<String> list2 = new ArrayList<>();
for (String element : list) {
if (!list2.contains(element)) {
list2.add(element);
}
}
}
/**
* for 双循环去重
* @author: 蜗牛
*/
public void remove2() {
List<String> list = new ArrayList(initList);
for (int i = 0; i < list.size() - 1; i++) {
for (int j = list.size() - 1; j > i; j--) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
System.out.println(list);
}
/**
* for 循环重复坐标去重
* @author: 蜗牛
*/
public void remove3() {
List<String> list = new ArrayList(initList);
List<String> list2 = new ArrayList(initList);
for (String element : list2) {
if (list.indexOf(element) != list.lastIndexOf(element)) {
list.remove(list.lastIndexOf(element));
}
}
System.out.println(list);
}
/**
* Set 去重
* @author: 蜗牛
*/
public void remove4() {
List<String> list = new ArrayList(initList);
List<String> list2 = new ArrayList(new HashSet(list));
System.out.println(list2);
}
/**
* Set 去重
* @author: 蜗牛
*/
@Test
public void remove5() {
List<String> list = new ArrayList(initList);
List<String> list2 = new ArrayList(new LinkedHashSet(list));
System.out.println(list2);
}
/**
* Stream 去重
* @author: 蜗牛
*/
public void remove6() {
List<String> list = new ArrayList(initList);
list = list.stream().distinct().collect(Collectors.toList());
System.out.println(list);
}
}