Java 流收集地图
Java stream Collection Map
我有一个地图,它有一个键字符串,一个对象列表作为值 Names
。在这张地图中,我保存了几年关于 Names
的信息。 `` class 的每个对象都有名称、性别和等级属性。
Map <String, ArrayList<Names>> myMap = new TreeMap<>();
我尝试这样做,但没有成功:
List<Names> filterList = myMap.filter((k, v) -> v.name == name).collect(Collectors.toList);
假设输入图是这样的:
Map<String, List<BabyName>> inputMap;
应该使用 Stream flatMap
和 filter
操作检索 BabyName
的列表 API:
List<BabyName> result = inputMap.values() // Collection<List<BabyName>>
.stream() // Stream<List<BabyName>>
.flatMap(List::stream) // Stream<BabyName>
.filter(bn -> bn.getRank() == 3) // filtered Stream<BabyName>
.collect(Collectors.toList());
这就是我的做法,不确定我在这里是否有帮助。我对 Java 和一般编程还很陌生。
//Method that takes an ArrayList, filter the list, and returns a new ArrayList
public static ArrayList<BabyName> filterArrayList(ArrayList<BabyName> inputList, int filter) {
ArrayList<BabyName> returnList = new ArrayList<>();
for (BabyName babyName: inputList) {
if (babyName.getRank() == filter)
returnList.add(babyName);
} return returnList;
}
这段代码基本上是遍历了TreeMap,调用了上面的方法。上述方法返回的 ArrayList 被添加到一个新的 ArrayList mFilteredList
.
ArrayList<BabyName> mFilteredList = new ArrayList<>();
for (Iterator<ArrayList<BabyName>> iterator = myMap.values().iterator(); iterator.hasNext(); ) {
ArrayList<BabyName> nameList = iterator.next();
mFilteredList.addAll(filterArrayList(nameList, 2));
}
我有一个地图,它有一个键字符串,一个对象列表作为值 Names
。在这张地图中,我保存了几年关于 Names
的信息。 `` class 的每个对象都有名称、性别和等级属性。
Map <String, ArrayList<Names>> myMap = new TreeMap<>();
我尝试这样做,但没有成功:
List<Names> filterList = myMap.filter((k, v) -> v.name == name).collect(Collectors.toList);
假设输入图是这样的:
Map<String, List<BabyName>> inputMap;
应该使用 Stream flatMap
和 filter
操作检索 BabyName
的列表 API:
List<BabyName> result = inputMap.values() // Collection<List<BabyName>>
.stream() // Stream<List<BabyName>>
.flatMap(List::stream) // Stream<BabyName>
.filter(bn -> bn.getRank() == 3) // filtered Stream<BabyName>
.collect(Collectors.toList());
这就是我的做法,不确定我在这里是否有帮助。我对 Java 和一般编程还很陌生。
//Method that takes an ArrayList, filter the list, and returns a new ArrayList
public static ArrayList<BabyName> filterArrayList(ArrayList<BabyName> inputList, int filter) {
ArrayList<BabyName> returnList = new ArrayList<>();
for (BabyName babyName: inputList) {
if (babyName.getRank() == filter)
returnList.add(babyName);
} return returnList;
}
这段代码基本上是遍历了TreeMap,调用了上面的方法。上述方法返回的 ArrayList 被添加到一个新的 ArrayList mFilteredList
.
ArrayList<BabyName> mFilteredList = new ArrayList<>();
for (Iterator<ArrayList<BabyName>> iterator = myMap.values().iterator(); iterator.hasNext(); ) {
ArrayList<BabyName> nameList = iterator.next();
mFilteredList.addAll(filterArrayList(nameList, 2));
}