瀏覽代碼

添加 '_posts/常用代码块.md'

aaronwei 4 年之前
父節點
當前提交
4da445f1b1
共有 1 個文件被更改,包括 129 次插入0 次删除
  1. 129 0
      _posts/常用代码块.md

+ 129 - 0
_posts/常用代码块.md

@@ -0,0 +1,129 @@
+---
+title: Java常用代码块
+date: 2021-10-28
+tags: Java
+comments: true
+categories: 编程语言
+---
+
+## java常用代码块
+
+
+
+
+
+> 为了减少手写出现的错误,可以直接复制使用,大部分是经常使用的代码,对map操作,list 分组,排序,后续可以放到IDEA做成快捷键
+
+
+
+| 对象 | 排序 | 分组 |分页|
+| -------- | -------- | -------- |-------|
+| list     | √     | √     |√|
+| map     | √     |      ||
+| set     |      |      ||
+
+
+
+
+
+
+#### map 根据Key排序 
+
+```Java
+private static Map<String, Object> sortByKey(Map<String, Object> map) {
+        Map<String, Object> result = new LinkedHashMap<>(map.size());
+        map.entrySet().stream()
+                .sorted(Map.Entry.comparingByKey())
+                .forEachOrdered(e -> result.put(e.getKey(), e.getValue()));
+        return result;
+    }
+```
+
+
+#### map 进行遍历
+
+```Java
+
+    for (Map.Entry<String, Object> m : map.entrySet()) {
+        System.out.println("key:" + m.getKey() + " value:" + m.getValue());
+    }
+    
+```
+
+
+
+
+#### list 对象根据某个字段分组 
+
+``` Java
+    //1 按照某个字段
+    Map<Object,List<Object>> map = demoList.stream().collect(Collectors.groupingBy(Object::getAttr));
+    //2 按照多个字段
+    Map<String, List<Object>> groupBy = objectList.stream().collect(Collectors
+    .groupingBy(o -> o.getAttr1() + "_" + o.getAttr2()));
+
+```
+
+
+
+
+#### list 用stream进行排序 .
+
+``` Java
+
+    //根据单个属性排序
+    List<String> stortList = list.stream().sorted().collect(Collectors.toList());
+    //根据对象某个属性排序
+    List<Object> sortList = objectList.stream().sorted(Comparator.comparing(Object::getAttr)
+    .reversed()).collect(Collectors.toList());
+    
+    
+```
+
+#### list 用Guava进行拆分分页
+
+```Java
+    List<List<Long>> splitList = Lists.partition(list, 200);
+```
+
+#### jodaTime 两个日期相差小时,天 ,分钟
+```Java
+    DateTime dt1 = new DateTime("2020-09-05");
+    dt1  = dt1.plusDays(1).plusMinutes(1).plusHours(1);
+    DateTime dt2 = new DateTime("2020-09-06");
+    
+    System.out.println(dt1);
+    System.out.println(dt2);
+    
+    //时间dt2-时间dt1 的差
+    int hours = Hours.hoursBetween(dt1, dt2).getHours();
+    int days = Days.daysBetween(dt1,dt2).getDays();
+    int minutes = Minutes.minutesBetween(dt1,dt2).getMinutes();
+    
+    System.out.println(hours+" "+days+" "+minutes);
+```
+
+### 两个时间是否有交集
+
+```Java
+        Date startTime1 = new DateTime("2021-01-10").toDate();
+        Date endTime1 = new DateTime("2021-02-16").toDate();
+        Date startTime2 = new DateTime("2021-01-09").toDate();
+        Date endTime2 = new DateTime("2021-01-24").toDate();
+
+        if ((startTime1.getTime() > startTime2.getTime()
+                && startTime1.getTime() < endTime2.getTime())
+                || (endTime1.getTime() > startTime2.getTime()
+                && endTime1.getTime() < endTime2.getTime())
+                || (startTime2.getTime() > startTime1.getTime()
+                && endTime2.getTime() < endTime1.getTime())
+        ) {
+            System.out.println("有交集");
+        }
+        if (((startTime1.getTime() >= startTime2.getTime())
+                || (endTime1.getTime() <= startTime2.getTime()))
+                && ((startTime1.getTime() <= startTime2.getTime())
+                || (startTime1.getTime() >= endTime2.getTime()))) {
+            System.out.println("无交集");
+        }
+```