Javaでリストに設定を変更しているときに順序が正しくない理由[重複]

Nov 30 2020

メソッドで文字列のセットを作成しますが、リストに入れるとすべての文字列が乱れます...(順序が必要です)ファイルから読み取った順序は次のとおりです:Rayan Lilia Moein Raman Hasti Rojina Behrad

これが返されるものです:Behrad Rojina Rayan Lilia Moein Raman Hasti

    public class IO {

   public static File file = new File("googolia.txt");
   static public Set<String> participant = new HashSet<>();

    public void read() {
        try {
            FileReader reader = new FileReader(file);
            BufferedReader bufferedReader = new BufferedReader(reader);
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                String split[] = line.split("->");
                participant.add(split[1]);//correct order
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}






public static void showDutys() {
    //what duty each person have
    IO io = new IO();
    io.read();
    ArrayList<String> participant = new ArrayList<>(IO.participant);
    for (int i = 0; i < participant.size(); i++) {
        System.out.println(participant.get(i));//incorrect order
    }
    IO.participant.removeAll(IO.participant);
    participant.removeAll(participant);

    System.out.println("=======================");
}

回答

Miguel Nov 30 2020 at 17:58

HashSetは実装されSortedSetていないため、要素を並べ替える必要はありません。

TreeSet代わりに使用できます。