我上课了:
static class AnotherClass {
int number;
String isPrime;
public int getNumber() {
return number;
}
public String getPrime() {
return isPrime;
}
public void setNumber(int number) {
this.number = number;
}
public void setPrime(String prime) {
isPrime = prime;
}
}
在主要课程中我有:
List<AnotherClass> listx = new ArrayList<AnotherClass>();//just a arraylist
for (int z = 0; z < howManyQuestions; z++) {//in loop i add class with fields
AnotherClass classx = new AnotherClass();
int valuex = Integer.parseInt(keyboardkey.readLine());
classx.setNumber(valuex);//save value in this class
String answer = Check(valuex);//i just get here string answer YES NO
classx.setPrime(answer);
listx.add(classx);//and i add this two fields of class to list
System.out.println();
}
INPUT: (i add value and check if it was input before) 3 4 3 OUTPUT NO NO YES How can i check if, for example value "3" is containing by list?
答案 0 :(得分:2)
1 AnotherClass必须实现equals()(并相应地实现hashCode())。
2使用方法包含listx中的(Object o)。
答案 1 :(得分:2)
private boolean contains(int i)
{
for(int j: listx.getNumber()) { if(i == j) return true; }
return false;
}
答案 2 :(得分:1)
一些注意事项 -
你的班级不需要静态。如果你宣布一个内部阶级,这有用。
你有一个容器类,它包含一个依赖于int的字符串,以及int。在你的班级里面检查是比较惯用的,例如
class AnotherClass {
int number;
public int getNumber() {
return number;
}
public String getPrime() {
return check(number)
}
private boolean check() { ... whatever logic you had .. }
}
如果您正在寻找“包含”功能,您可能会使用HashSet或LinkedHashSet(如果您想保留排序)。如果要对创建的类执行此操作,则需要实现hashCode()方法以告知hashSet如何知道它是否具有重复值。
或者您可以遍历列表。
答案 3 :(得分:1)
您必须为equals()
实施AnotherClass
。默认equals()
比较标识而不是值相等。
List.contains()
的javadoc说:
如果此列表包含指定的元素,则返回true。更正式地说,当且仅当此列表包含至少一个元素e (o==null ? e==null : o.equals(e))
时才返回true。