私はプログラミングの初心者で、2つのクラスがあります。ファーストクラスがある:フィールドint age
とcompareToをオーバーライドする方法(Java)
public class User implements Comparable<User>
、コンストラクタとComparableインタフェースのオーバーライド方法:
:@Override
public int compareTo(User user) {
return user.age >= age ? -1 : 0;
}
セカンドクラスは、リストからセットのコレクションを作成する方法と public class SortUser
です
public Set<User> sort(List<User> list) {
Set<User> result = new TreeSet<>();
for (User user : list) {
result.add(user);
}
return result;
}
すべてのUser
のセット内のオブジェクトをソートする必要がありますが、私がリストウィットを作ったときそのリストから ...とSet
(TreeSet
)を作成します。h 3つのUser
オブジェクト...
User a = new User(1);
User b = new User(2);
User c = new User(3);
List<User> list = new ArrayList<>();
list.add(c);
list.add(a);
list.add(b);
(312
今リストの順番がある):私は終わり
SortUser sortUser = new SortUser();
Set<User> set = sortUser.sort(list);
その次数が13
のset
の場合は、set
には2つのオブジェクトしか存在しません。何がうまくいかないのですか?
値。リストの 'sort'を呼び出すだけです。 – Carcigenicate
ソートされたSetを持つことはできません。集合は順序付けられていないコレクションです。 sort()メソッドは、List(または他の順序付けされたコレクション)を適切にソートするか、Listを返す必要があります。 – chrisdowney
@chrisdowneyまあ、技術的にはあなたが注文セットを持つことができます。特定の実装がそれをサポートしていることを確認するだけです。順序付けられたセットの実装を書くことは非常に可能です。 – Carcigenicate