Java 流集合映射

时间:2021-06-28 17:37:45

标签: java stream maps

我有一个地图,它有一个键字符串,一个对象列表作为值 Names。在这张地图中,我保存了几年关于 Names 的信息。 ``类的每个对象都有名称、性别和等级属性。

Map <String, ArrayList<Names>> myMap = new TreeMap<>();

我试图这样做,但它不起作用:

List<Names> filterList = myMap.filter((k, v) -> v.name == name).collect(Collectors.toList);

2 个答案:

答案 0 :(得分:1)

假设输入图是这样的:

Document doc = new Document(pdfDocument);
String s = "This text is underlined with a dashed line";
Paragraph paragraph = new Paragraph();
Text text;
for (int i = 0; i <s.length() ; i++) {
    text = new Text(String.valueOf(s.charAt(i)));
    paragraph.add(text);
}

paragraph.setNextRenderer(new WaveUnderlinedParagraphRenderer(paragraph));
doc.add(paragraph);
doc.close();

应该使用 Stream API 的 Map<String, List<BabyName>> inputMap; BabyName 操作检索 flatMap 的列表:

filter

答案 1 :(得分:0)

这就是我的做法,不确定我是否在这里有所帮助。总的来说,我对 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));
        }