1

我有课:

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();

        }
输入:(我添加值并检查之前是否输入过)
3
4
3

输出
不
不
是的

我如何检查例如值“3”是否包含在列表中?
4

4 回答 4

2

1 AnotherClass 必须实现 equals() (并相应地实现 hashCode() )。

2 使用来自 listx 的方法 contains(Object o)。

于 2011-07-10T19:02:04.127 回答
2
private boolean contains(int i)
{
    for(int j: listx.getNumber()) { if(i == j) return true; }
    return false;
}
于 2011-07-10T19:07:44.423 回答
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 如何知道它是否具有重复值。

或者你可以只遍历你的列表。

于 2011-07-10T19:02:46.343 回答
1

您必须实施equals()for AnotherClass。默认equals()比较身份而不是值相等。

javadocList.contains()说:

如果此列表包含指定元素,则返回 true。更正式地说,当且仅当此列表包含至少一个元素 e 时才返回 true 使得(o==null ? e==null : o.equals(e))

于 2011-07-10T19:04:58.447 回答