随笔记录工作日志
工作中遇到的问题随笔记录
1、将map集合中的key/value数据按照一定的需求过滤出来,并将过滤出来的map的key值存到list集合中
首先想到的是stream流,但是我对stream流的用法基本不熟,记不住方法,如果坚持用stream流去实现这个需求,要么去系统的学一遍stream流的各种用法,要么就从需求本身入手,这个需求需要哪些方法,再去对应了解和使用;时间成本问题,这里我选择后者。
首先就是要将map集合转化为stream流。
map.entrySet().stream()
stream流中过滤的方法是filter,那么这段代码这变成了
map.entrySet().stream().filter()
比如过滤条件是map的value要等于String类型的"link"
map.entrySet().stream().filter((entry) -> entry.getValue().equals("link"))
过滤完之后,因为stream的特性
Stream流只能操作一次;
Stream方法返回的是新的流;
Stream不调用终止方法,中间的操作不会执行。
所以要将这个流再次转换为map才能进行下一步操作
map.entrySet().stream().filter((entry) -> entry.getValue().equals("vlink")).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))
将过滤出来的map的key值存到list集合中
list.addAll(map.entrySet().stream().filter((entry) -> entry.getValue().equals("vlink")).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)).keySet());
2、接口入参要求是list,但是实际的需求只能传一个参数,需要new一个list集合来存放这个参数吗?
Collections.singletonList()
是一个静态方法,它返回一个包含单个指定元素的不可变列表。该方法接受一个参数,即要包含在列表中的元素。这个方法通常用于创建只包含一个元素的列表,因为这种情况下使用普通的 ArrayList
或 LinkedList
等列表实现会浪费内存和资源。由于返回的列表是不可变的,因此不能向其添加或删除元素,但可以通过 get()
方法获取其中的元素。
List<String> link = Collections.singletonList("link");
String link = link.get(0);
3、程序启动后,获取启动后最近的一个整点和距离这个整点还有多少秒
LocalDateTime now = LocalDateTime.now();
LocalDateTime nextHour = now.plusHours(1).withMinute(0).withSecond(0).withNano(0);
long secondsUntilNextHour = ChronoUnit.SECONDS.between(now, nextHour);
System.out.println("Next hour: " + nextHour + ", seconds until next hour: " + secondsUntilNextHour);
待续…………