failed building wheel for termcolor_for循环优化,List分组,多线程的写法
1
开发中遇到 List 的集合根据某一个字段分组的情况:
Map> templateDate = new HashMap<>(16);for (User map : list) { String code = map.getSex();/*根据性别分组*/ List listMap = templateDate.computeIfAbsent(code, k -> new ArrayList<>());
listMap.add(map); }

2
在开发中遇到 双层for循环 的情况 该如何优化呢?
List listOne = sgService.selectOneUser();
List listTwo = sgService.selectOneUser();
List 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 listResult2 = new ArrayList<>();
Map 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 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 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(); 

有更好的写法欢迎留言交流!
有更好的写法欢迎留言交流!
有更好的写法欢迎留言交流!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
