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);

}

59024f9ea40519507c6627b8f105488c.png

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);}
}

a356e6d1d70cb48b9491c40221d8c056.png

mapCGVO 中的信息为:

aa94aea1b946b77b2c90b40c76edc3a7.png

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();

2379c32461a4765d1b25482e081bc9e0.png

013ff233f254649a5723378537df66cf.png

有更好的写法欢迎留言交流!

有更好的写法欢迎留言交流!

有更好的写法欢迎留言交流!


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部