【发布时间】:2019-12-29 21:46:24
【问题描述】:
如何使用 Java Streams 执行以下操作?
我在这里尝试比较两个字符串列表。如果有任何元素匹配,则在第一次匹配中,增加计数,将匹配值添加到 matchList 并打破循环。
List<String> nameList1 = Arrays.asList("Bill", "Steve", "Mark");
List<String> nameList2 = Arrays.asList("Steve Jobs", "Mark", "Bill");
int count = 0;
List<String> matchList = new ArrayList<>();
for (String name1 : nameList1) {
if (nameList2.contains(name1)) {
count++;
matchList.add(name1);
break;
}
}
}
System.out.println(count); // 1
System.out.println(matchList); // [Bill]
【问题讨论】:
-
我不想要包含,因为在以下情况下,包含将匹配“Steve”和“Steve Jobs” - 仅适用于字符串。如果您使用
nameList1.contains(someString),它将告诉您数组是否包含确切的字符串。 -
在这里使用流可以实现什么?
String result = null; for (String name1 : nameList1) { if (nameList2.contains(name1)) { result = name1; break; }}. -
“还有一个条件,问题已更新。请看一下。谢谢。” - 不要那样做。改变问题是在浪费那些试图帮助你的人的时间。
-
你应该做的是: 1) 阅读/注意你收到的cmets。 2) 尝试从您已经给出的答案中找出解决问题的方法。 3)如果你不能解决,问一个新的问题,引用这个问题并添加新的条件。
-
那么您是在尝试查找第一个匹配的名称,然后停止检查其他名称吗?
标签: java java-stream