杂记-如何优雅的去重list元素

List去重的5种方式

  • 借助Set的特性进行去重
  • 利用set集合特性保持顺序一致去重
  • 遍历List集合,将元素添加到另一个List集合中
  • 使用Java8特性去重
  • 双重循环使用list自身方法remove()

借助Set的特性进行去重


/**

* Set 去重

*/

@Test

public void setDistinct() {

Set set = new HashSet();

List newList = new ArrayList();

set.addAll(list);

newList.addAll(set);

System.out.println(newList);

}

利用set集合特性保持顺序一致去重


/**

* Set 去重保持原序

*/

@Test

public void setDistinctHasSort() {

//方法一

List<integer> listNew = new ArrayList<integer>(new TreeSet<integer>(list));/<integer>/<integer>/<integer>

//方法二

List<integer> listNew2 = new ArrayList<integer>(new LinkedHashSet<integer>(list));/<integer>/<integer>/<integer>

}

遍历List集合,将元素添加到另一个List集合中


/**

* 添加到其他List

*/

@Test

public void add2OtherList(){

List<integer> newList = new ArrayList<integer>();/<integer>/<integer>

for (Integer str : list) {

if (!newList.contains(str)) {

newList.add(str);

}

}

System.out.println();

}

使用Java8特性去重


@Test

public void java8Feature()

{

List<integer> newList =list.stream().distinct().collect(Collectors.toList());/<integer>

System.out.println(newList );

}

双重循环使用list自身方法remove()-不推荐


/**

* 循环去重

*/

@Test

public void loopRemove(){

for (int i = 0; i < list.size(); i++) {

for (int j = 0; j < list.size(); j++) {

if(i!=j&&list.get(i)==list.get(j)) {

list.remove(list.get(j));

}

}

}

System.out.println(list);

}


分享到:


相關文章: