今天碰到的一个的操作, 如果是同一个作者,假设书名是一样的情况下,对应的日期修改为指定日期,但是没有弄明白,为什么可以这么操作,下面是例子:
資深大佬 : Gilgamesh7 1
@Data @Builder public class Book { private String name; private String author; private String day; } @Slf4j public class Test { public static void main(String[] args) { Book book1 = Book.builder().name("Java").author("a").day("2020-01-01").build(); Book book2 = Book.builder().name("Python").author("b").day("2020-06-01").build(); Book book3 = Book.builder().name("PHP").author("c").day("2020-07-01").build(); Book book4 = Book.builder().name("Java").author("a").day("2020-02-01").build(); Map<String, Book> map = new HashMap<>(); List<Book> books = Arrays.asList(book1, book2, book3, book4); List<Book> result = books.stream().map(x -> { if (map.containsKey(x.getAuthor())) { x.setDay("2020-05-01"); map.get(x.getAuthor()).setDay("2020-05-01"); } else { map.put(x.getAuthor(), x); } return x; }).collect(Collectors.toList()); log.info(JSON.toJSONString(result)); }
结果: [{"author":"a","day":"2020-05-01","name":"Java"}, {"author":"b","day":"2020-06-01","name":"Python"}, {"author":"c","day":"2020-07-01","name":"PHP"}, {"author":"a","day":"2020-05-01","name":"Java"}]
大佬有話說 (6)