在Hashcode中搜索不需要';我不能用Java工作
我有一个在Hashcode中搜索不需要';我不能用Java工作,java,set,containers,hashset,Java,Set,Containers,Hashset,我有一个 Set tablica = new HashSet(); 我想搜索它,所以我写了这样的东西: public void searchStudentbySurname() { int a = tablica.size(); if (0 >= a) { JOptionPane.showMessageDialog(null, "No data"); } else { String S = JOptionPane.showInput
Set tablica = new HashSet();
我想搜索它,所以我写了这样的东西:
public void searchStudentbySurname() {
int a = tablica.size();
if (0 >= a) {
JOptionPane.showMessageDialog(null, "No data");
} else {
String S = JOptionPane.showInputDialog(null, "Give me a surname");
Iterator itr = tablica.iterator();
while (itr.hasNext()) {
String str = (String) itr.next();
if(tablica.equals(S)) { // this if doesn't work (1)
JOptionPane.showMessageDialog(null, str);
}
}
}
}
}
我想知道为什么(1)不起作用。您正在将字符串与集合进行比较,因此它不能返回true 您可能想将其与
str
-str.equals
进行比较,但即使这样也没有必要。
您只需将整个while循环替换为
tablica.contains
。这就是Set
s的作用。您希望将tablica中的项目与用户输入进行比较
应该是:
if(str.equals(S)) {
不起作用,因为您正在比较两种不同类型(集合和字符串)的对象。你可以用它
如果此集合包含指定的元素,则返回true。更多
形式上,当且仅当该集合包含元素e时,返回true
使得(o==null?e==null:o.equals(e))
你为什么要绕圈子?为什么不直接使用
if(tablica.contains))
?(顺便说一下,S
不是一个好的局部变量名…)
if(tablica.equals(S))