如何使用java比较arraylist中的名称
我的大脑有点酸痛,我一点也不知道为什么这不起作用 我有两个arraylist如何使用java比较arraylist中的名称,java,Java,我的大脑有点酸痛,我一点也不知道为什么这不起作用 我有两个arraylist private ArrayList<String> name = new ArrayList<String>(); private ArrayList<String> name2 = new ArrayList<String>(); 名称2包含 a,b,c,c,d,e,e,f,g,g name(索引i)检查它是否包含name2(索引x)值,如果它包含该值,则不递增外键
private ArrayList<String> name = new ArrayList<String>();
private ArrayList<String> name2 = new ArrayList<String>();
名称2包含
a,b,c,c,d,e,e,f,g,g
name(索引i)检查它是否包含name2(索引x)值,如果它包含该值,则不递增外键整数,如果它不包含该值,则递增外键整数。我不确定为什么这不起作用(在
name
和name2
中有什么内容?)。不过,更好的方法是使用哈希集存储唯一的名称,然后将它们提取到ArrayList中。您是否正在尝试查找两个集合中相同的名称
private final Set<String> names = new LinkedHashSet<String>();
private final Set<String> names2 = new LinkedHashSet<String>();
public Set<String> namesInBoth() {
Set<String> ret = new LinkedHashSet<String>(names);
ret.retainAll(names2);
return ret;
}
private final Set name=new LinkedHashSet();
私有最终集名称2=新LinkedHashSet();
公共集名称both(){
Set ret=新的LinkedHashSet(名称);
ret.Retainal(名称2);
返回ret;
}
可能的错误-您可以使用.contains来比较字符串。您应该改用.equals或.equalsIgnoreCase
编辑:
private ArrayList getForeignKey(){
ArrayList foreignKey=新ArrayList();
对于(int i=0;i
}嗯?你到底需要检查什么?您有两个列表,您需要如何比较它们?在您的示例中,输入是什么?您只显示输出和预期输出。因此,如果列表“name”中的字符串存在于列表“name2”中,则不执行任何操作。如果列表“name”中的字符串不存在于列表“name2”中,请将其索引存储在列表“foreignKey”中。我理解你的逻辑了吗?我正在讨论使用equalsignorecase而不是contains,这是有一定原因的,但已经考虑到了。从描述中可以看出:“我需要检查'name'中的值是否与'name2'中的值相同…”contains和equals执行不同的操作。例如:“123456”.contains(“123”)将返回true,而.equals将返回false。我将对其进行更改,很抱歉造成混淆。刚刚编辑了您的代码。我可能跳过了}或smth,但你应该明白了。
a,b,c,c,d,e,e,f,g,g
private final Set<String> names = new LinkedHashSet<String>();
private final Set<String> names2 = new LinkedHashSet<String>();
public Set<String> namesInBoth() {
Set<String> ret = new LinkedHashSet<String>(names);
ret.retainAll(names2);
return ret;
}
private ArrayList<Integer> getForeignKey() {
ArrayList<Integer> foreignKey = new ArrayList<Integer>();
for (int i = 0; i < name.size(); i++) {
boolean found = false;
for (int x = 0; x < name2.size(); x++){
if (name.get(i).equals(name2.get(x))){
found = true;
break;
}
}
if(!found){
foreignKey.add(i);
}
}
return foreignKey;