User786 Ответов: 1

Удаление дубликатов в arraylist из текстового файла - java


Я хочу удалить дубликаты в ArrayList. Я пытался преобразовать ArrayList в HashSet, но по какой-то причине это не работает. Это только меняет порядок в списке:

Выход:
Choreography -> [Imran Sullivan]
Goodfella -> [Khalil Person]
DarknianIdeal -> [Sophia Jeffery]
DarknianIdeal -> [Clyde Calderon]
Frolicwas -> [Taylor Vargas]
Reliable -> [Aryan Hess]
DarknianIdeal -> [Liyah Navarro]
Deservedness -> [Eadie Jefferson]
Reliable -> [Angel Whitehouse]
Choreography -> [Priya Oliver]


Каким должен быть выход:
Choreography -> [Imran Sullivan]
Goodfella -> [Khalil Person]
DarknianIdeal -> [Sophia Jeffery]
Frolicwas -> [Taylor Vargas]
Reliable -> [Aryan Hess]
Deservedness -> [Eadie Jefferson]


Что я уже пробовал:

Коды, выделенные жирным шрифтом ниже, - это те коды, которые я пробовал.

package task1;

import java.util.*;
import java.io.*;

public class Task1 {
    public static void main(String[] args) {   
        List<Person> personFile = new ArrayList<>();
        Set<Person> splitUserNameList = new HashSet<>(personFile);

        try {            
            BufferedReader br = new BufferedReader(new FileReader("person-data.txt"));
            String fileRead = br.readLine();
            while (fileRead != null) {
                String[] personData = fileRead.split(":");                
                String fullName = personData[0];
                String userNameGenerator = personData[1];
                String[] userNameSplit = userNameGenerator.split(",\\s+");                
                String newUserNameSplit = userNameSplit[0];                
                Person personObj = new Person(fullName, newUserNameSplit);
                splitUserNameList.add(personObj);                
                fileRead = br.readLine();
            }
            br.close();            
        }  
        catch (FileNotFoundException ex) {            
            System.out.println("File not found!");
        } 
        catch (IOException ex) {             
            System.out.println("An error has occured: " + ex.getMessage());
        }

        for (Person userNames: splitUserNameList) {                
            System.out.println(userNames);           
        }           
    } 
}


package task1;

public class Person {
    private String fullName;
    private String userNameGenerator;

    public Shark2(String fullName, String userNameGenerator) {
        this.commonName = fullName;
        this.userNameGenerator = userNameGenerator;
    }

    public String getFullName() {
        return fullName;
    }

    public String getUserNameGenerator() {
        return userNameGenerator;
    }
    
    @Override
    public String toString() {        
        return userNameGenerator + " -> " + "[" + fullName + "]";
    }
}

1 Ответов

Рейтинг:
1

CPallini

Цитата:
DarknianIdeal -> [София Джеффри]
DarknianIdeal -> [Клайд Кальдерон]
Вышеприведенные строки не являются дубликатами, вы знаете.
Если вам нужно различать только первую строку каждой строки, то используйте a HashMap имея в виду userNameGenerator как ключ и соответствующее Person объект как ценность.