我有一个名为Paragens
的类,如下所示:
public class Paragens {
static int contadorParagens = 1;
String nomeParagem;
int id;
public Paragens(String nomeParagem) {
this.nomeParagem = nomeParagem;
this.id = contadorParagens++;
}
// getters and setters for nomeParagem
}
每个Paragens对象都有一个名称和一个ID。
此类有一个主要方法,我在其中创建几个Paragens对象并将其存储在ArrayList中,如下所示:
public static void main(String[] args) {
ArrayList<Paragens> paragens = new ArrayList<Paragens>();
paragens.add(new Paragens("name1");
// ... add more paragens
}
一切正常。如果我插入一堆paragens并打印它们,我可以看到tat没问题。
我想做的是让用户输入一个paragem名称,然后我想查看该paragem是否已在ArrayList中。
String name;
System.out.println("Insert paragem name: ");
pickName = sc.nextLine();
System.out.println(paragens.contains(pickName));
我究竟做错了什么?
最佳答案
contains
检查列表是否包含您实际提交的内容。在这种情况下,您要传递一个String
名称,但要将其与Paragem
实例进行比较。 contains
不能神奇地猜测它应该查看Paragem
实例上的给定属性来比较字符串。
您可以轻松地循环列表以自己找到:
boolean found = false;
for (Paragem p : paragems) {
if (p.nomeParagem.equals(pickName)) { // Or use an accessor function for `nomeParagem` if appropriate
found = true;
break;
}
}
...或作为功能:
boolean containsParagemWithName(ArrayList<Paragem> paragems, String pickName) {
for (Paragem p : paragems) {
if (p.nomeParagem.equals(pickName)) {
return true;
}
}
return false;
}