public class User {
private Long id;
private String userName;
private String roleName;
private String password;
private Integer age;
private Integer gender;
private String nickName;
private Double salary;
private StatsType Type; /**
*
* @param id
* @param userName
* @param roleName
* @param password
* @param age
* @param gender
* @param nickName
* @param salary
* @param Type
*/
public User(Long id,String userName,String roleName,String password,Integer age,Integer gender,String nickName,Double salary,StatsType Type) {
this.id = id;
this.userName = userName;
this.roleName = roleName;
this.password = password;
this.age = age;
this.gender = gender;
this.nickName = nickName;
this.salary = salary;
this.Type = Type;
} /**
* 分段类型
*/
public static enum StatsType { OFFLINE((short) 0), NOTWORK((short) 1), WORKING((short) 2); private short value; private StatsType(short value) {
this.value = value;
} public void setValue(short value) {
this.value = value;
} public short getValue() {
return value;
} public static StatsType valueOf(Short value) { if (value == null) {
return null;
} switch (value) {
case 0:
return OFFLINE;// 缺勤
case 1:
return NOTWORK;// 闲置
case 2:
return WORKING;// 工作
}
return null;
}
} get,set..... }

  

List<User> list2 = Lists.newArrayList(
new User(1L,"sa","职员","***",18,0,"张三",13242.69,User.StatsType.NOTWORK),
new User(2L,"yunying","职员","***",30,1,"李四",12746.36,User.StatsType.WORKING),
new User(3L,"ta","经理","***",50,0,"王五",15312.98,User.StatsType.OFFLINE)
);

  取出对象中某个属性值

private static List<String> getUserName(List<User> list) {
return list.stream().map(User::getUserName).collect(Collectors.toList());
}

  List<User> 分组(根据性别)

private static Map<Integer, List<User>> getGroupMapByGender(List<User> userList) {
return userList.stream().collect(Collectors.groupingBy(User::getGender));
}

  

Map<Integer, List<User>> map = getGroupMapByGender(list2);
for (Integer key : map.keySet()) {
System.out.println(key + "---" + JSONArray.toJSONString((List<User>) map.get(key)));
}

  求两个数组的交集

String str = "a,b,c,d,e";
String str1 = "a,b,c,d,e,f,g";
List<String> list = Arrays.asList(str.split(","));
List<String> list1 = Arrays.asList(str1.split(","));

  

private static List<String> getMixList(List<String> orgList, List<String> deskList) {
return orgList.stream().filter(t -> deskList.contains(t)).collect(Collectors.toList());
}

  对map的value进行排序

Map<String, Integer> mapData = new HashMap<>();
mapData.put("aa", 20);
mapData.put("bb", 7);
mapData.put("cc", 10);

  

private static Map<String, Integer> sortOrderByMapValue(Map<String, Integer> map) {
return map.entrySet().stream().sorted(Map.Entry.<String, Integer> comparingByValue())
.collect(Collectors.toMap(k -> k.getKey(), v -> v.getValue(), (k, v) -> k, LinkedHashMap::new));
}

  List转Map(抽取某一属性做value)

private static Map<String, String> getList2Map(List<User> list) {
return list.stream().collect(Collectors.toMap(User::getUserName, User::getNickName));
}

  

List转Map(value为对象本身)

private static Map<String, User> getList2Map2(List<User> list) {
return list.stream()
.collect(Collectors.toMap(User::getUserName, User -> User, (key1, key2) -> key2, LinkedHashMap::new));
}

  数组中某属性最大值

private static Optional<User> getMaxAgeByList(List<User> list) {
return list.stream().max((e1, e2) -> Integer.compare(e1.getAge(), e2.getAge()));
}

  

分组查询职员数量

Map<String,Long> map5 = list2.stream()
.collect(Collectors.groupingBy(User::getRoleName,Collectors.counting()));
System.out.println(map5);

  数组中返回的第一个元素

private static Optional<User> getFirstValueByList(List<User> list) {
return list.stream().findFirst();
}

  数组中属性是否有某值(是否所有人都没在工作)

private static boolean isHasNoneValueByList(List<User> list) {
return list.stream().noneMatch((e) -> e.getType().equals(User.StatsType.WORKING));
}

  数组中属性是否有某值(是否所有人都在工作)

private static boolean isHasAllValueByList(List<User> list) {
return list.stream().allMatch((e) -> e.getType().equals(User.StatsType.WORKING));
}

  数组中属性是否有某值(是否有人没来)

private static boolean isHasAnyValueByList(List<User> list) {
return list.stream().anyMatch((e) -> e.getType().equals(User.StatsType.OFFLINE));
}

  数组中某属性最小值

private static Optional<User> getMinAgeByList(List<User> list2) {
return list2.stream().min((e1, e2) -> Integer.compare(e1.getAge(), e2.getAge()));
} System.out.println(user4.get().getAge());

  

jdk1.8特性2的更多相关文章

  1. JDK1.9-新特性

    1. Java平台级模块系统 该特性使Java9最大的一个特性,Java提供该功能的主要的动机在于,减少内存的开销,JVM启动的时候,至少会有30~60MB的内存加载,主要原因是JVM需要加载rt.j ...

  2. JDK1.8特性实现jdk动态代理,使业务解耦

    首先,先创建一个interface IHello 目标接口类 interface IHello { void sayHello(); } 然后再写一个目标类的实现类 class HelloImpl i ...

  3. JDK1.8特性(更新中..)

    "15,5,9,17,99,107,47"转List<Long> List<Long> linkCompanyIds = Arrays.asList(&qu ...

  4. JDK1.5以后的版本特性

    一.JDK1.5新特性 1.泛型:泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法.可以在编译的时候就能 ...

  5. 使用jdk1.8 stream特性对参数名称进行排序

    在对外对接的时候,通常会碰到签名方式, 然后签名的时候,要求按照参数名称进行排序. 比如参数为 c=22&a=1, 需要将结果排序为a=1&c=22, 然后再进行别的运算. 可以使用j ...

  6. JDK和IDE

    IDE 集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器.编译器.调试器和图形用户界面工具.集成了代码 ...

  7. 【Java面试】基础知识篇

    [Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...

  8. 【Java面试】1、基础知识篇

    [Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充. 源码分享:https: ...

  9. Java常用API-高级

    ---恢复内容开始--- Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.所有类在创建对象的时候,最终找的父类就是Object. * String toStri ...

随机推荐

  1. 【性能监控-Perfmon工具】Perfmon工具使用教程

    一.Perfmon工具简介 Perfmon是一款Windows自带的性能监控工具,提供了图表化的系统性能实时监视器.性能日志和警报管理.通过添加性能计数器可以实现对CPU.内存.网络.磁盘.进程等多类 ...

  2. P1297 单选错位 题解

    这是一道我们的考试题 前置芝士 期望 定义:试验中每次可能结果的概率乘以其结果的总和(来自百度某科 滑稽) 性质:\(E(ax+by)\) = \(xE(a)\) * \(yE(b)\) 计算式: \ ...

  3. ✅Vue选择图像

    下载 Vue选择图像Vue选择图像 Vue 2.用于从列表中选择图像的组件 演示 https://mazipan.github.io/vue-select-image/ 安装 #纱 纱添加vue-se ...

  4. DM9000时序设置

    想了解一下DM9000的移植修改原理,所以分析了一下时序图和引脚连接   首先看一下DM9000的引脚和MINI2440的引脚连接   DM9000  MINI2440 功能描述   SD0   DA ...

  5. 一道算法题,引出collections.Counter的特殊用法

    题目描述: 题目编号:1002. 查找常用字符 给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表.例如,如果一个字符在每个字符串中出现 3 次, ...

  6. ThreadLocal什么时候会出现OOM的情况?为什么?

    ThreadLocal里面使用了一个存在弱引用的map,当释放掉threadlocal的强引用以后,map里面的value却没有被回收.而这块value永远不会被访问到了. 所以存在着内存泄露. 最好 ...

  7. mysql DISTINCT选取多个字段,获取distinct后的行信息

    背景:      a表保存关联关系,通过ACode 获取该关系中的所有 BCode, 并获取所有Bcode-max(Bvrsn)的信息  Bnm 表a 表b          循序渐进:        ...

  8. 99%的Android开发不得不面对的三道坎,到底该怎么破?

    今年比往年要特殊一些,受疫情的影响,很多公司都出现了裁员现象.以至于最近很多技术同学也在纷纷向我倒苦水. 王鹏便是其中的一员,王鹏之前是在一线城市的一家小型互联网公司做Android应用开发.从毕业实 ...

  9. day26 Pyhton 面向对象复习

    一 class 类名(): pass 对象 object 对象 = 类名() class Person: pass print(Person)#<class '__main__.Person'& ...

  10. 【UR #2】猪猪侠再战括号序列

    UOJ小清新题表 题目摘要 UOJ链接 有一个由 \(n\) 个左括号 "(" 和 \(n\) 个右括号 ")" 组成的序列.每次操作时可以选定两个数 \(l, ...