Java 高级语法

语法:Arrays.asList(值1,值2,....)

作用:它可以把一个数组或者多个参数转换成一个 List 集合

代码演示:

//创建一个List类型的集合,其值为Integer类型,集合包含1,2,3三个数值
List<Integer> integers = Arrays.asList(1, 2, 3);
​
//创建一个List类型的集合,其值为String类型,集合包含java,python,c++三个字符串
List<String> list = Arrays.asList("java", "python", "c++");

语法:BeanUtil.copyToList(目标对象集合,转换对象类型)

作用:将一个List集合中的值类型转换成指定要转换的对象类型

代码演示:

//将List<User>中的泛型集合User转换为List<UserVO>的UserVO泛型集合
List<UserVO> userVOs = BeanUtil.copyToList(users, UserVO.class);

语法:CollectionUtils.isEmpty(集合)

作用:判断参数null或者其size等于0,可以同时判空和长度,不会报空指针异常

代码演示:

List<User> list = new LinkedList<>();
list.add(user);
//输出为false,因为集合list不为null,且size>0
System.out.println(CollectionUtils.isEmpty(list));

List<User> list2 = new LinkedList<>();
//输出为true,因为集合list2的size=0
System.out.println(CollectionUtils.isEmpty(list2));
​
//输出为true,因为集合list3的值为null
List<User> list3 = null;
System.out.println(CollectionUtils.isEmpty(list3));

语法:Collections.emptyList()

作用:返回一个空的List(使用前提是不会再对返回的list进行增加和删除操作);

List list = Collections.emptyList();
System.out.println(list);//输出不为null的[]集合
System.out.println(list.size());//输出0

语法:集合.stream().filter(集合项->判断条件)

作用:根据判断条件对集合进行筛选过滤

//创建一个包含1,2,3三个值的集合
List<Integer> list1 = Arrays.asList(1,2,3);

//list1集合进行过滤筛选,筛选条件为list1集合的每一项大于1则可以留下,小于等于1则被过滤掉,最终剩下2和3,最后把身下的2和3转化为集合赋值给list2集合
List<Integer> list2 = list1.stream().filter(item -> item > 1).collect(Collectors.toList());

//输出为2   3
list2.forEach(System.out::println);

语法:对象集合.stream().map(对象::对象某一属性).collect(转换的类型);

作用:将一个对象集合中的某一属性给提取出来,然后转换成相应类型

//设置获取id为1,2,3的对象集合的sql语句
QueryWrapper<User> queryWrapper = new QueryWrapper<User>().select("id", "username").in("id",1,2,3);

//获取到id为1,2,3的对象集合
List<User> users = userMapper.selectList(queryWrapper);

//提取users集合的每一项User的id值,然后转换为List集合赋值给list
List<Long> list = users.stream().map(User::getId).collect(Collectors.toList());

//输出1,2,3
list.forEach(System.out::println);

语法:Collectors.groupingBy(对象::分组属性)

作用:根据分组属性将集合进行分组,分组后为Map类型的集合

//根据年龄分组
List<User> userList = new ArrayList<>();

//方法引用实现,根据User类的age属性进行分组,分组后以key和value的形式进行存储,key存储age属性,value存储User对象
Map<Integer, List<User>> ageGroupMap = userList.stream().collect(Collectors.groupingBy(User::getAge));

语法:Collectors.toMap()

作用:将一个List转换为Map

//根据对象的属性1和属性2进行分组存储到Map集合,属性1为key,属性2为value
Map<Long, String> map = userList.stream().collect(Collectors.toMap(User::getId, User::getName));
​
//根据对象的属性1和集合的对象项进行分组存储到Map集合,属性1为key,对象2为value,p -> p就是进来的是什么,最终就是什么,这里就是进来的是User对象,出去的也就是User对象
Map<Long, User> map = userList.stream().collect(Collectors.toMap(User::getId, p -> p));
​
//如果有key有重复值,可以在后面加(a, b) -> b第三个属性,(a, b) -> b的意思就是,如果存在重复的,永远取后面一个
Map<Integer, String> map = userList.stream().collect(Collectors.toMap(User::getAge, User::getName, (a, b) -> b));

语法:DigestUtils.md5DigestAsHex(字节数组类型)

作用:将字节数组转化为MD5哈希值,并以十六进制字符串形式返回。

String password = "123456"

//输出123456字符串的md5加密文,其md5加密文为e10adc3949ba59abbe56e057f20f883e
DigestUtils.md5DigestAsHex(password.getBytes())

语法:StringUtils.hasLength(字符串)

作用:如果字符序列不为 null 值,并且字符序列的长度大于 0 ,则返回 true

String str1 = "wrw"

//字符序列不为 null 值,并且字符序列的长度大于
System.out.println(StringUtils.hasLength(token)) 0 ,输出true

String str2 = ""

//长度不大于0,输出false
System.out.println(StringUtils.hasLength(token))

String str2 = null

//字符序列为 null,值输出false
System.out.println(StringUtils.hasLength(token))

上一篇:记一次RabbitMQ未配置Listener导致的报错


下一篇:自适应感兴趣区域的级联多尺度残差注意力CNN用于自动脑肿瘤分割| 文献速递-深度学习肿瘤自动分割