前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >拥抱JAVA

拥抱JAVA

作者头像
adu
发布2022-10-30 15:09:14
2970
发布2022-10-30 15:09:14
举报
文章被收录于专栏:adu_blog

1、集合参数拼接成字符串

代码语言:javascript
复制
String  word = list.stream().map(entity::getxx).collect(Collectors.joining(","));

2、获取当前时间,SimpleDateFormat 不是线程安全的,在多线程环境会有并发安全问题,DateFormatUtils是线程安全的

代码语言:javascript
复制
String date = DateFormatUtils.format(new Date(), "yyyy-MM-dd");

3、字符串转 Date

代码语言:javascript
复制
String date2 = "2021-10-01 15:00:00";
Date date = DateUtils.parseDate(date2, "yyyy-MM-dd HH:mm:ss");

4、获取年月日,线程安全的

代码语言:javascript
复制
LocalDateTime now = LocalDateTime.now();
int year = now.getYear();
int month = now.getMonthValue();
int day = now.getDayOfMonth();

5、判断集合不为空

代码语言:javascript
复制
CollectionUtils.isNotEmpty(new ArrayList<>());

6、判断对象为空

代码语言:javascript
复制
Objects.isNull(entity)

7、并集、交集

代码语言:javascript
复制
List<Object> list1 = Arrays.asList("1", "2", "3", "4");
List<Object> list2 = Arrays.asList("4", "5", "6", "7");
//并集 输出: [1, 2, 3, 4, 5, 6, 7]
CollectionUtils.union(list1, list2);
//交集 输出:[4]
CollectionUtils.intersection(list1, list2);

8、两个时间相差距离多少天多少小时多少分多少秒

代码语言:javascript
复制
/**
* 两个时间相差距离多少天多少小时多少分多少秒
*
* @param one
* 时间参数 1 格式:1990-01-01 12:00:00
* @param two
* 时间参数 2 格式:2009-01-01 12:00:00
* @return long[] 返回值为:{天, 时, 分, 秒}
* @throws java.text.ParseException
*/
public static String getDistanceTimes(Date one, Date two) {
    long day = 0;
    long hour = 0;
    long min = 0;
    long time1 = one.getTime();
    long time2 = two.getTime();
    long diff;
    if (time1 > time2) {
        diff = time1 - time2;

        day = diff / (24 * 60 * 60 * 1000);
        hour = (diff / (60 * 60 * 1000) - day * 24);
        min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);
        sec = (diff / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
    }

    long[] times = { day, hour, min, sec };
    String str = String.format("%d天%d时%d分", day, hour, min);
    return str;
}

9、字符串Base64编码、解码

代码语言:javascript
复制
//Base64编码
String s = Base64.getEncoder().encodeToString("你好".getBytes(StandardCharsets.UTF_8));
//Base64解码
String s = new String(Base64.getDecoder().decode("你好"), StandardCharsets.UTF_8);

10、减少循环次数

反例:两层循环,如果数据较多,非常消耗cpu资源

代码语言:javascript
复制
for(User user: userList) {
   for(Role role: roleList) {
      if(user.getRoleId().equals(role.getId())) {
         user.setRoleName(role.getName());
      }
   }
}

正例:把第二层循环变成 map,直接通过 key 获取想要的数据

代码语言:javascript
复制
Map<Long, List<Role>> roleMap = roleList.stream().collect(Collectors.groupingBy(Role::getId));
for (User user : userList) {
    List<Role> roles = roleMap.get(user.getRoleId());
    if(CollectionUtils.isNotEmpty(roles)) {
        user.setRoleName(roles.get(0).getName());
    }
}

11、高效找出两个集合中的不同元素

代码语言:javascript
复制
/**
 * 找出两个list的不同元素
 * @param list1
 * @param list2
 * @return
 */
private static List<String> getDiffByHashSet(List<String> list1,List<String> list2){
    //temp存放两个list的共有元素
    List<String> temp = new ArrayList<>();
    //hashSet底层通过hashmpa实现的,为了防止map扩容增加性能代价;初始化长度为两个链表的长度
    Set<String> set = new HashSet<>((int)((float)(list1.size()+list2.size())/0.75F+1.0F));
    for (String s1:list1) {
        set.add(s1);
    }
    for (String s2:list2) {
        //添加不成功说明元素共有
        if(!set.add(s2)){
            temp.add(s2);
        }
        set.add(s2);
    }
    //删除set中存在temp的元素
    set.removeAll(temp);
    return new ArrayList<>(set);
}

12、删除list集合中特定元素

代码语言:javascript
复制
//方式一
list.removeIf(item -> "1".equals(item));
//方式二
Iterator it = list.iterator();
while (it.hasNext()){
    User user = (User)it.next();
    if("xxx".equals(user.getxxx())){
        list.remove(user);
    }
}

13、List分组获取第一个元素的方法

代码语言:javascript
复制
Map<Integer, Coupon> resultList = couponList.stream().collect(Collectors.groupingBy(Coupon::getCouponId,Collectors.collectingAndThen(Collectors.toList(),value->value.get(0))));

14、对象集合按时间排序

代码语言:javascript
复制
//升序
coDoctorVOList.sort(Comparator.comparing(CoDoctorVO::getTime));
//降序
coDoctorVOList.sort((m1, m2) -> m2.getTime().compareTo(m1.getTime()));

14、对象集合根据某个字段去重

代码语言:javascript
复制
userList = userList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(User::getUserid))), ArrayList::new));
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/07/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档