2015-03-06 6 views
-1

Я пробовал искать, но безрезультатно, надеюсь, вы можете мне помочь.Сравнение переменных для объектов в ArrayList (Java)

У меня есть объект ArrayList, содержащий все 4 целочисленных переменных. Я хочу, чтобы моя программа бросить Exception, если некоторые из переменных для этих объектов идентичны .. Я постараюсь написать в псевдокоде:

for(Object x : ArrayList) 
{ 
    if(x.Variable == someVariables)// all the variables for the objects in the arraylist 
    { 
     throw exception 
    } 
} 

Это новичок вопрос, но я надеюсь, что вы можете мне помочь спасибо, спасибо.

+0

Является ли это псевдокод или ваш фактический код? Не ожидайте, что мы прокомментируем ваш код, если вы не покажете нам свой код. С чем вы столкнулись? – Stultuske

+0

Пожалуйста, добавьте свой объект, который содержит целые значения. – Neil

ответ

1

Внутри вашей цикл добавить их в набор, если методы добавления возвращает ложный дубликат существует

for(Object x : ArraList) 
{ 
    Set<Integer> set=new HashSet<Integer>(); 
    for(int i:x.getAllValues()){ 
     boolean status=set.add(i) 
     if(status==false){ 
     //throw exception 
     } 
    } 
} 

запись получает значение методы в классе объекта

ИЛИ

Просто создать набор из списка и проверить их длину

Set<Integer> set= new HashSet<Integer>(list); 
if(set.size()!=list.size()){ 
//contains duplicates 
} 
+0

Вы можете просто создать набор из списка, а затем посмотреть, соответствуют ли размеры. –

+0

@mike добавил спасибо – Burusothman

+0

@MikeSamuel: Дело не в проверке того, что список содержит только уникальные vaules, это касается проверки отдельных объектов списка, если у них есть правильное состояние (все 4 члена-вары должны быть уникальными) – xmoex

1

Id рекомендует реализовать свою проверку ценности внутри вашего класса, который является вашим Object. Мне кажется важным, чтобы «вещь», такая как ваш Object, могла выполнять проверку действительности на своих собственных значениях. Я приведу вам пример:

public class Container { 

    // declaration of your four variables 

    // other code, maybe getters and setters 

    /** 
    * Checks if all variables are pairwise inequal 
    * @return true if so, false otherwise 
    */ 
    public boolean isValid() {  
     // check vars 
    } 
} 

Таким образом, ваша рутина, чтобы проверить все объекты в списке очень легко:

for (Container x : arrayList) { 
    if (!x.isValid()) { 
     throw new RuntimeException("A bad thing just happend!"); 
    } 
} 
Смежные вопросы