jdk8中List、map、set间转换(含转Map分组),以及List去重

  • Post author:
  • Post category:其他





一、List、Map、Set间转换(含转Map分组)

// List<Org> 转成 Set<Org>集合
Set<Org> orgSet = orgList.stream().collect(Collectors.toSet());
// List<String> 转成 Set<String>集合
Set<String> orgIdSet = orgList.stream().map(Org::getOrgId).collect(Collectors.toSet());

/**
 * List -> Map
 * 需要注意的是:
 * (1)toMap 如果集合对象有重复的key,会报错Duplicate key ....(比如user1,user2的id都为1)。
 *      可以用 (k1,k2)->k1 来设置,如果有重复的key,则保留key1,舍弃key2
 */
Map<String, Org> orgMap = orgList.stream().collect(Collectors.toMap(Org::getOrgId, a -> a,(k1,k2)->k1));

//两个属性组合作为key
Map<String, Org> orgMap = organinfo.stream().collect(Collectors.toMap(k->k.getOrgId()+k.getOrgName(), k.getOrgName()));

// List转成Map分组,并根据student中的name属性进行分组
Map<String,List<Org>> group = orgList.stream().collect(Collectors.groupingBy(Student::getName));




二、List去重

// List<Org> orgList = new ArrayList<>();
// Org实体内可自定义的equals和hash算法
List<Org> list = orgList.stream().distinct().collect(Collectors.toList());

Set<Org> orgSet = orgList.stream().collect(Collectors.toSet());



三、最值

List<Org> orgList = new ArrayList<>();
orgList.add(new Org("1","张三"));
orgList.add(new Org("2","李四"));
orgList.add(new Org("0","李四"));
orgList.add(new Org("20","李四"));

//最小: 0
String minVal = orgList.stream().map(Org::getOrgId).min(String::compareTo).get();
//最大: 20
String maxval = orgList.stream().map(Org::getOrgId).max(String::compareTo).get();



版权声明:本文为hu1010037197原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。