如何查找arraylist是否包含类字段中的值?

时间:2011-07-10 18:58:18

标签: java class arraylist contain

我上课了:

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?

4 个答案:

答案 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。