failed building wheel for termcolor_for循环优化,List分组,多线程的写法
生活随笔
收集整理的這篇文章主要介紹了
failed building wheel for termcolor_for循环优化,List分组,多线程的写法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1
開發中遇到 List 的集合根據某一個字段分組的情況:
Map<String,List<User>> templateDate = new HashMap<>(16);for (User map : list) { String code = map.getSex();/*根據性別分組*/ List<User> listMap = templateDate.computeIfAbsent(code, k -> new ArrayList<>());listMap.add(map);
}
2
在開發中遇到 雙層for循環 的情況 該如何優化呢?
List<User> listOne = sgService.selectOneUser();List<User> listTwo = sgService.selectOneUser();
List<User> listResult1 = new ArrayList<>();// 未優化的時候 嵌套for循環 時間復雜度 O(n^2)for (User u1:listOne){for (User u2:listTwo){if (u1.getAge().equals(u2.getAge()) && u1.getName().equals(u2.getName())) {listResult1.add(u2);}
}
}// 優化后 List集合 轉 map 時間復雜度 O(n)List<User> listResult2 = new ArrayList<>();
Map<String, User> mapCGVO = listOne.stream().
collect(Collectors.toMap(item -> (item.getAge()+"_"+item.getName()), CentralizedGridapprovalInfoVO -> CentralizedGridapprovalInfoVO,(k1, k2)->k2));for (User cne: listTwo) {String key = cne.getAge()+"_"+cne.getName();if (mapCGVO.containsKey(key)) {listResult2.add(cne);}
}mapCGVO 中的信息為:
3
在開發中遇到 多線程 的時候 需要寫一個線程池
/*** 多線程的寫法
* corePoolSize 線程數量
* maximumPoolSize 最大線程數
* keepAliveTime 保持心跳時間
* TimeUnit 時間單位
* taskList 線程的集合
* resList 返回結果的集合
*/List<String> resList = new ArrayList<>(3);
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("RepeatPowerCutStatisticThreadPool-%d").build();
ExecutorService executorService = new ThreadPoolExecutor(3, 5, 0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<>(1024),
namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
List<Runnable> taskList = new ArrayList<>(3);
taskList.add(() -> resList.add("線程一的業務"));
taskList.add(() -> resList.add("線程二的業務"));
taskList.add(() -> resList.add("線程三的業務"));
CompletableFuture[] futures = taskList.stream().map(task -> CompletableFuture.runAsync(task, executorService)).toArray(CompletableFuture[]::new);
CompletableFuture.allOf(futures).join();
executorService.shutdown();
有更好的寫法歡迎留言交流!
有更好的寫法歡迎留言交流!
有更好的寫法歡迎留言交流!
總結
以上是生活随笔為你收集整理的failed building wheel for termcolor_for循环优化,List分组,多线程的写法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: prim算法_贪心算法详解(附例题)
- 下一篇: ZigBee网络数据传递流程_基于Zig