我正在寻找一些将对象列表转换为Map<String, List<String>>
的帮助。
class Person {
private String name;
private int age;
}
我有一个List<Person>
,我想收集Map<int, List<String>>
的关键是年龄和价值是相同年龄的人的名字列表。
我试过这些方法,但不起作用。
persons.stream().collect(Collectors.groupingBy(p -> p.getAge()), );
发布于 2018-06-09 02:12:48
使用这个接受下游收集器的groupingBy
重载:
Map<Integer, List<String>> map = persons.stream()
.collect(Collectors.groupingBy(Person::getAge,
Collectors.mapping(Person::getName, Collectors.toList())));
发布于 2018-06-12 05:57:12
如果这样做的目的是实现快速查找,那么您是否考虑过使用像Data Store这样的索引集合:
https://github.com/jparams/data-store
你可以这样做:
Store<Person> store = new MemoryStore<Person>();
store.index("name", Person::getName);
store.addAll(listOfPeople); // populate your store with data
Person personFound = person.get("name", "bob");
您可以对同一数据进行多个索引。你甚至可以创建不区分大小写的索引等等。
https://stackoverflow.com/questions/50766280
复制相似问题