Как найти, если arraylist содержит значение, которое находится в поле класса? - PullRequest
1 голос
/ 10 июля 2011

У меня есть класс:

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 ]

2 голосов
/ 10 июля 2011
private boolean contains(int i)
{
    for(int j: listx.getNumber()) { if(i == j) return true; }
    return false;
}
2 голосов
/ 10 июля 2011

1 AnotherClass должен реализовать equals () (и соответственно реализовать hashCode ()).

2 Использовать метод содержит (Object o) из списка x.

1 голос
/ 10 июля 2011

Вы должны реализовать equals() для AnotherClass.Значение по умолчанию equals() сравнивает идентичность, а не равенство значений.

Javadoc для List.contains() говорит:

Возвращает true, если этот список содержит указанный элемент.Более формально, возвращает true тогда и только тогда, когда этот список содержит хотя бы один элемент e такой, что (o==null ? e==null : o.equals(e)).

1 голос
/ 10 июля 2011

A Несколько замечаний -

вашему классу не требуется статика.Это полезно, если вы объявляете внутренний класс.

У вас есть контейнерный класс, содержащий строку, которая зависит от типа 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, как узнать, имеет ли он повторяющееся значение.

Или вы можете просто перебрать свой список.

...