java一些常用方法

本文介绍了Java 8的Stream API进行分组、过滤、属性获取、驼峰命名转换,以及如何使用Hutool处理数组、日期处理、集合操作和常见工具方法。涵盖了列表操作、数据处理和基础技术应用。

目录

1、java8

1.1、分组(如下例子以用户姓名分组)

1.2、过滤(通过某些条件过滤)

1.3、获取List中某个实体属性的List集合

1.4、 下划线转驼峰

1.5、按照一定的规则过滤集合中的元素

1.6、 给List的某个属性赋值

1.7、 获取集合属性的集合

1.8、平均数

1.9、 根据多个字段去重

2.0、排序 

2.1、复制

2、hutool

2.1、数[]组转化成List<>

2.2 、日期转字符串

2.3、判断两个时间间隔的分钟

2.4、包含

2.5、ListUtil

3、其他常用方法

3.1、list转数组

3.2、 将String对象的每一个下标位的对象保存在char[]中

3.3、类中的每一个字段赋一个相同的值

3.4、获取本地IP和mac地址



1、java8

1.1、分组(如下例子以用户姓名分组)

List<User> users=new ArrayList();
Map<String, List<User>> listMap = users.stream().collect(Collectors.groupingBy(h -> h.getUserName()));
for (String userName: listMap.keySet()) {
        List<User> uList=listMap.get(userName);
}


//顺序不变
          Map<String,List<A>>  groupBySchool = alsRankingLists.stream().collect(Collectors.groupingBy(AlsRankingList::getClassName, LinkedHashMap::new, Collectors.toList()));

1.2、过滤(通过某些条件过滤)

 一、

List<User> userFilterList= users.stream().filter(s ->
                        A.getName().equals(s.getUserName())).collect(Collectors.toList());


二、

List<User> list= A.stream().filter(x -> {
                        List<B> subjectsList = x.getSubjectsList();
                        List<B> subjects = subjectsList.stream().filter(ma -> ma.getSchoolRank().longValue() > getNumResult.longValue()).collect(Collectors.toList());
                        if (ObjectUtil.isNotEmpty(subjects) && ObjectUtil.length(subjects) > 0) {
                            return false;

                        } else {
                            return true;
                        }

                    }).collect(Collectors.toList());

1.3、获取List中某个实体属性的List集合

 List<AlsRankingListSubjects> subjectsList = alsRankingLists.stream().map(AlsRankingList::getSubjectsList).flatMap(Collection::stream).collect(Collectors.toList());

1.4、 下划线转驼峰

   List<Map<String, Object>> maps = Mapper.selectList(a);
        if (ObjectUtil.isNotNull(maps)) {
            List<Map<String, Object>> result = maps.stream()
                    .map(MapUtil::toCamelCaseMap)
                    .collect(Collectors.toList());
            return result;
        }

1.5、按照一定的规则过滤集合中的元素

//过滤30以上的用户
List<User> users=new ArrayList();
users.removeIf(
    user->user.getAge()>=30
);

1.6、 给List<Class>的某个属性赋值

一、

Integer totalReadNum = teacherReviewProgressList.stream().mapToInt(t -> Convert.toInt(t.getReadNumber())).sum();
//总剩余量(题块总数-阅卷老师阅卷数)
Integer waitNumber = total - totalReadNum;
//总数=等我阅数量+总阅量
teacherReviewProgressList = teacherReviewProgressList.stream().map(x -> {
x.setTotalNumber(Convert.toStr(waitNumber + Convert.toInt(x.getReadNumber())));
return x;
}).collect(Collectors.toList());
return teacherReviewProgressList;

二、

 AtomicInteger tempRanking = new AtomicInteger(1);
        AtomicReference<String> tempComprehensiveRate = new AtomicReference<>("");
        classCompares = classCompares.stream().map(x -> {
            if (StrUtil.isNotEmpty(tempComprehensiveRate.get())) {
                if (!x.getComprehensiveRate().equals(tempComprehensiveRate.get())) {
                    tempRanking.set(tempRanking.get() + 1);
                }
            }
            tempComprehensiveRate.set(x.getAverage());
            x.setComprehensiveRateRanking(Convert.toStr(tempRanking.get()));
            return x;
        }).collect(Collectors.toList());
        return classCompares;

1.7、 获取集合属性的集合

List<AlsRankingListSubjects> subjectsList = alsRankingLists.stream().map(AlsRankingList::getSubjectsList).flatMap(Collection::stream).collect(Collectors.toList());

1.8、平均数

 Double average = rankingLists.stream().mapToDouble(x -> x.getTotalGradingAchievement()).summaryStatistics().getAverage();

1.9、 根据多个字段去重

List<AlsRankingListSubjects>  subjectsList = subjectsList.stream()
                .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getSubjectId() + ";" + o.getSubjectName()))), ArrayList::new));

2.0、排序 

1、升序
list.stream().sorted(Comparator.comparing(User::getUserId));
2、降序 
list.stream().sorted(Comparator.comparing(User::getUserId, Comparator.reverseOrder())); 

2.1、复制

复制list

List<User> users= CglibUtil.copyList(list, User::new);

复制类

User user= new User();
BeanUtil.copyProperties(userData, user);

2、hutool

2.1、数[]组转化成List<>

 ①CollUtil
 String[] col = new String[]{"1", "2"};
 List<String> list= CollUtil.newArrayList(col);
 ②Convert
 String[] aArray = {"许七安", "许新年", "褚采薇", "许玲月", "许玲音"};
 List<String> aList = Convert.toList(String.class, aArray);

2.2 、日期转字符串

//当前时间
Date date1 = DateUtil.date();   
//根据表达式输出   
String format1=DateUtil.format(date1,"yyyy-MM-dd");
System.out.println("format1:"+format1);
//yyyy-MM-dd
String format2=DateUtil.formatDate(date1);
System.out.println("format2:"+format2);
//yyyy-MM-dd HH:mm:ss
String format3=DateUtil.formatDateTime(date1);
System.out.println("format3:"+format3);
//HH:mm:ss
String format4=DateUtil.formatTime(date1);
System.out.println("format4:"+format4);

2.3、判断两个时间间隔的分钟

Date createTime = scantronTeacherBlockRel.getCreateTime();
Date now = DateUtil.date();
long betweenMinute = DateUtil.between(now, createTime, DateUnit.MINUTE);

2.4、包含

ObjectUtil.contains(mList, markType)

2.5、ListUtil

        List<AlsGradeParameterSettingDetail> settingDetails = ListUtil.toList(
                new AlsGradeParameterSettingDetail(StringUtils.UUID(), setting.getSettingId(), "A", new BigDecimal(85), 1),
                new AlsGradeParameterSettingDetail(StringUtils.UUID(), setting.getSettingId(), "B", new BigDecimal(70), 2),
                new AlsGradeParameterSettingDetail(StringUtils.UUID(), setting.getSettingId(), "C", new BigDecimal(60), 3)

        );

3、其他常用方法

3.1、list转数组

List<String> strList = new ArrayList<>();
strList.add("1");
strList.add("2");
String[] strArray = strList.toArray(new String[strList.size()]);

3.2、 将String对象的每一个下标位的对象保存在char[]中

String a = "abcd"; 
char[] b = a.toCharArray(); 
结果是['a','b','c','d']

3.3、类中的每一个字段赋一个相同的值

InfoDomain w = new InfoDomain();
Field[] fields = InfoDomain.class.getDeclaredFields();
try {
   for (Field field : fields) {
      field.setAccessible(true);
      field.set(w, "0");
   }
} catch (IllegalAccessException e) {
   throw new RuntimeException(e);
}

3.4、获取本地IP和mac地址

        InetAddress inetAddress = null;
        try {
            inetAddress = InetAddress.getLocalHost();
        } catch (UnknownHostException e) {
            throw new RuntimeException(e);
        }
        String macAddress = NetUtil.getMacAddress(inetAddress);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值