随笔记录工作日志

工作中遇到的问题随笔记录

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() 是一个静态方法,它返回一个包含单个指定元素的不可变列表。该方法接受一个参数,即要包含在列表中的元素。这个方法通常用于创建只包含一个元素的列表,因为这种情况下使用普通的 ArrayListLinkedList 等列表实现会浪费内存和资源。由于返回的列表是不可变的,因此不能向其添加或删除元素,但可以通过 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);

待续…………

你可能感兴趣的:(java,开发语言)