JAvaコレクションオブジェクトは複数のフィールドに基づいて再ロードされます
4171 ワード
皆さんが関心を持っている結果が来ました.前にオブジェクトの繰り返しをやり直すには2つのforループが必要かもしれませんが、今日からは必要ありません.昨日1篇の文章を見てTreeSetがどれだけ重いことができると言って、私は1回重いことができることを知っていて、それからテスト研究は以下の通りです:
私は彼のこの方法に少し問題があることに気づいた.もし私が集合の値を変えたら、以下のようにします.
これでリストの3番目のデータだけを変更し、印刷結果を見てみましょう.
これで私たちのニーズを満たすことはできません.
少し修正しました
結果は次のように表示されます.
//
List list = new ArrayList<>();
list.add(new User(" ","123",1));
list.add(new User(" 1","1234",1));
list.add(new User(" 1","1234",1));
list.add(new User(" ","123",1));
for(User u : list){
System.out.println(" " + u);
}
Set set = new TreeSet<>(new Comparator() {
@Override
public int compare(User user0, User t1) {
int count = 1;
if(StringUtils.equals(user0.getUsername(), t1.getUsername()) &&
StringUtils.equals(user0.getPassword(),t1.getPassword())){
count = 0;
}
return count;
}
});
set.addAll(list);
System.out.println("________________");
for(User u : set){
System.out.println(" " + u);
}
:
User{username=' ', password='123', age=1}
User{username=' 1', password='1234', age=1}
User{username=' 1', password='1234', age=1}
User{username=' ', password='123', age=1}
________________
User{username=' ', password='123', age=1}
User{username=' 1', password='1234', age=1}
私は彼のこの方法に少し問題があることに気づいた.もし私が集合の値を変えたら、以下のようにします.
List list = new ArrayList<>();
list.add(new User(" ","123",1));
list.add(new User(" 1","1234",1));
list.add(new User(" 1","12345",1));
list.add(new User(" ","123",1));
for(User u : list){
System.out.println(" " + u);
}
Set set = new TreeSet<>(new Comparator() {
@Override
public int compare(User user0, User t1) {
int count = 1;
if(StringUtils.equals(user0.getUsername(), t1.getUsername()) &&
StringUtils.equals(user0.getPassword(),t1.getPassword())){
count = 0;
}
return count;
}
});
set.addAll(list);
System.out.println("________________");
for(User u : set){
System.out.println(" " + u);
}
これでリストの3番目のデータだけを変更し、印刷結果を見てみましょう.
User{username=' ', password='123', age=1}
User{username=' 1', password='1234', age=1}
User{username=' 1', password='12345', age=1}
User{username=' ', password='123', age=1}
________________
User{username=' ', password='123', age=1}
User{username=' 1', password='1234', age=1}
User{username=' 1', password='12345', age=1}
User{username=' ', password='123', age=1}
これで私たちのニーズを満たすことはできません.
重要な方法は次のとおりです。
少し修正しました
List list = new ArrayList<>();
list.add(new User(" ","123",1));
list.add(new User(" 1","1234",1));
list.add(new User(" 1","1235",1));
list.add(new User(" ","123",1));
for(User u : list){
System.out.println(" " + u);
}
Set set = new TreeSet<>(new Comparator() {
@Override
public int compare(User user0, User t1) {
int count = 1;//=0
count = user0.getUsername().compareTo(t1.getUsername()) +
user0.getPassword().compareTo(t1.getPassword());
return count;
}
});
set.addAll(list);
System.out.println("________________");
for(User u : set){
System.out.println(" " + u);
}
結果は次のように表示されます.
User{username=' ', password='123', age=1}
User{username=' 1', password='1234', age=1}
User{username=' 1', password='1235', age=1}
User{username=' ', password='123', age=1}
________________
User{username=' ', password='123', age=1}
User{username=' 1', password='1234', age=1}
User{username=' 1', password='1235', age=1}