Как получить уникальные строки с помощью класса SET из Arraylist из "Arraylist string objects" класса Type Setters & Getters

Мне нужна ваша помощь в Java-коде, например, как я могу получить уникальные записи из массива, который является многомерным массивом приведения класса объектов Value (сеттеров и геттеров).

Я читаю таблицу и помещаю все записи в список авторов. "Таблица" будет иметь всю таблицу, скажем, 3 столбца 25 строк, в которых некоторые номера материалов являются уникальными, а некоторые дублируются. Я хотел избавиться от дубликатов строк с номерами материалов и ТОЛЬКО получить уникальный номер строк материалов.

ArrayList<EssVO> recordInstance = new ArrayList<EssVO>();
EssVO ESSvorecord = new EssVO();
for (int i = 0; i < table.getNumRows(); i++){
table.setRow(i);            
ESSvorecord = new EssVO();             
ESSvorecord.setCONTRACT_NUMBER(table.getString("CONTRACT_NUMBER"));
ESSvorecord.setCONTRACT_LINE_ITEM(table.getString("CONTRACT_LINE_ITEM"));
ESSvorecord.setMATERIAL_NUMBER(table.getString("MATERIAL_NUMBER"));             
recordInstance.add(ESSvorecord);
}
//Display
Iterator<EssVO> itrForSubs = recordInstance.iterator();         
while(itrForSubs.hasNext()){
    ESSvorecord = itrForSubs.next();           
ESSvorecord.getCONTRACT_NUMBER();
ESSvorecord.getCONTRACT_LINE_ITEM();
ESSvorecord.getMATERIAL_NUMBER();
}

Ценю ваш вклад и помощь.

Спасибо Радж

3 ответа

Для этого вы можете использовать цикл foreach для Java5.

    for (EssVO essVO : set)
    {
        System.out.println(essVO);
    }

Вам необходимо использовать интерфейс Comparator, который позволяет сравнивать несколько ключей - при условии, что у вас более 1 ключа

Если они возвращают значение, равное 0, вы можете исключить добавление их в список.

Как реализовать Comparator

Вы можете добавить список в java.util.Set (используя LinkedHashSet в моем примере), который будет содержать только уникальный объект. "Уникальный" определяется методами (hashCode() и equals ()), реализованными в вашем объекте, который вы помещаете в List и Set. После того, как вы реализовали методы hashCode () и equals (), вы можете просто поместить List в Set, который будет содержать только уникальные записи, основанные на equals () и hashCode().

Вот мой пример кода для hashCode () и equals () EssVO:

@Override
public int hashCode() {
    return this.number.hashCode();
}

@Override
public boolean equals(Object obj) {
    if(EssVO.class.isInstance(obj))
    {
        EssVO essVO = (EssVO)obj;

        if(this.number.equals(essVO.getNumber()))
        {
            return true;
        }
    }
    return false;
}

    List<EssVO> list = new ArrayList<EssVO>(2);

    list.add(new EssVO("A1", "A1 Name", "This A1 Name"));
    list.add(new EssVO("A2", "A2 Name", "This A2 Name"));
    list.add(new EssVO("A3", "A3 Name", "This A3 Name"));
    list.add(new EssVO("B1", "B1 Name", "This B1 Name"));
    list.add(new EssVO("B2", "B2 Name", "This B2 Name"));
    list.add(new EssVO("A2", "A2 Name", "This A2 Name"));
    list.add(new EssVO("A3", "A3 Name", "This A3 Name"));
    list.add(new EssVO("C1", "C1 Name", "This C1 Name"));
    list.add(new EssVO("B2", "B2 Name", "This B2 Name"));

    Set<EssVO> set = new LinkedHashSet<EssVO>();
    set.addAll(list);
Другие вопросы по тегам