首页 > 技术文章 > java8 把List<Object> 根据某字段去重

qq1141100952com 2019-07-16 19:58 原文

 

 

 
import java.util.ArrayList;
import java.util.List;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import java.util.*;
import java.util.stream.Collectors;

import static java.util.Comparator.comparing;
import static java.util.Comparator.comparingLong;
import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.toCollection;




1 public static void main(String[] args) { 2 Milk milk0=new Milk(0,"123456"); 3 Milk milk1=new Milk(1,"123476"); 4 Milk milk2=new Milk(0,"876433"); 5 List<Milk> list=new ArrayList<>(); 6 list.add(milk0); 7 list.add(milk1); 8 list.add(milk2); 9 //去重 10 List<Milk> uniqueMilk = list.stream().collect( 11 collectingAndThen( 12 toCollection(() -> new TreeSet<>(comparing(n->n.getKey()))),ArrayList::new) 13 ); 14 15 for (Milk m:uniqueMilk) { 16 System.out.println(m.toString()); 17 } 18 19 }

 

public class Milk {
  private Integer key;
  private String value;

  public Milk(Integer key, String value) {
    this.key = key;
    this.value = value;
  }

  public Integer getKey() {
    return key;
  }

  public void setKey(Integer key) {
    this.key = key;
  }

  public String getValue() {
    return value;
  }

  public void setValue(String value) {
    this.value = value;
  }

  @Override
  public String toString() {
    return "Milk{" + "key=" + key + ", value='" + value + '\'' + '}';
  }
}

 

推荐阅读