我有两个字符串类型的数组列表:
列出一个->芒果,香蕉,苹果
榜单b苹果->人
我必须从两个列表中找出不相似的元素。
直到我实现了这个:
List d = new ArrayList(a);
toReturn.removeAll(b);
return d;但是这段代码的问题是我不想要芒果,因为列表b中的第一个元素包含"Man“字符串。我只想把"Banana“还回去。
发布于 2018-09-11 14:59:10
您可以遍历一个列表,并找到其中不是另一个列表的子字符串的项,然后当然是相同的,参数颠倒:
private static Stream<List> filterNonSimilar(List<String> a, List<String> b) {
return a.stream()
.filter(ai -> b.stream().noneMatch(bi -> ai.contains(bi) || bi.contains(ai));
}
public static List<String> nonSimilar(List<String> a, List<String> b) {
return Stream.concat(filterNonSimilar(a, b), filterNonSimilar(b, a))
.collect(Collectors.toList());
}发布于 2018-09-11 14:59:40
您已经迭代了一个列表,然后必须在另一个列表中比较它,如果第二个列表中存在元素,则删除该元素(反之亦然),下面我将分享此方法的示例代码。
public class Comp {
public static void main(String... strings) {
List<String> lis1 = new ArrayList<>();
lis1.add("applefy");
lis1.add("boy");
lis1.add("carrr");
List<String> lis2 = new ArrayList<>();
lis2.add("apple");
lis2.add("car");
List<String> result = new ArrayList<>();
for (String a : lis1) {
for (String b : lis2) {
if (a.contains(b)) {
result.add(a);
}
}
}
lis1.removeAll(result);
System.out.println(lis1);
}}输出: boy
希望这能有所帮助。
https://stackoverflow.com/questions/52270195
复制相似问题