如何解决检查 ArrayList 是否不包含 Java 中的字符串
我有两个 ArrayList:myList 和 myList1。 myList 包含字符串,例如“aaa 111”、“bbb 222”和“aaa 333”。 myList1 当前为空,但我想通过查看 myList1 是否不包含来自 myList 的部分字符串来填充它。例如,“符号”变量是“aaa”。 “num”变量是“111”。 “s”变量是符号 + num。所以“s”变量是“aaa 111”。对于此代码,将 aaa 111 添加到 myList1(因为 myList1 不包含 aaa),将 bbb 222 添加到 myList1(因为 myList1 不包含 bbb;此时它只包含 aaa 111),aaa 333 应该不会添加到 myList1 中,而应该转到 else 语句(因为 myList1 已经包含 aaa(因为 aaa 111))。但是,当我运行我的代码时,它会将所有三个字符串都添加到 myList1。
if (!myList1.contains(symbol)) {
myList1.add(s);
} else {
//do something
}
解决方法
正如评论中已经指出的,您需要拆分字符串以从中提取符号并维护一组已添加的符号。添加时,您可以检查当前元素的符号是否在已添加的符号内:
date
我用这个代码测试过:
private static List<String> createDistinctSymbolList(List<String> myList) {
List<String> result = new ArrayList<>();
Set<String> addedSymbols = new HashSet<>();
for (String s : myList) {
String currentSymbol = getSymbol(s);
if (!addedSymbols.contains(currentSymbol)) {
result.add(s);
}
addedSymbols.add(getSymbol(s));
}
return result;
}
private static String getSymbol(String str) {
String[] parts = str.split(" ");
return parts[0];
}
这会打印出这个输出:
List<String> myList = new ArrayList<>();
myList.add("aaa 111");
myList.add("bbb 222");
myList.add("aaa 333");
List<String> distincAAA = createDistinctSymbolList(myList);
distincAAA.forEach(System.out::println);
,
我已经有几年没有做 Java 编程了,所以请原谅任何语法错误
HashSet symbolSet = new HashSet();
for (String n: myList) {
String[] symbols = n.split(" ");
boolean found = false;
for (String sym: symbols) {
if (symbolSet.contains(sym))
found = true;
}
}
if (!found) {
myList1.add(n);
for (String sym: symbols) {
symbolSet.add(sym);
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。