ComparableインタフェースとComparatorインタフェースの比較——Comparableインタフェースの詳細
4325 ワード
Comparableインタフェース:java.langパッケージにあります.
Comparableインタフェース:1.このインタフェースを実現したクラスは,自然ソートを強制される.質問はまた来ました:それは何が自然な順序ですか?≪ナチュラル・ソート|Natural Sort|emdw≫:ディクショナリ・シーケンスのソートで、大文字と小文字を区別しません.例えば、a、Aはb、Bの前に並んでいる.簡単なテストをしましょう:今、ユーザーを自然にソートする必要があります.So、親愛なる仲間たち、これはどうすればいいですか?アイデア:ユーザークラス(User)を作成し、Comparableインタフェースを実装してテストします.覚えていますよ:Collections.sort()リストをソートできます. Arrays.sort();配列を並べ替えることができますよ.へへへ、Let's do a test!
次に、Userクラスのコードを示します.
package test;
次はテストを行うコードUserTestです.
皆さん、プログラムの実行結果は何ですか?
ははは、結果は:
前の予想と同じではないでしょうか.ははは、今日はComparableインターフェースがここまで、ByeBye!!!
転載先:https://www.cnblogs.com/yorickLi/p/5950553.html
Comparableインタフェース:1.このインタフェースを実現したクラスは,自然ソートを強制される.質問はまた来ました:それは何が自然な順序ですか?≪ナチュラル・ソート|Natural Sort|emdw≫:ディクショナリ・シーケンスのソートで、大文字と小文字を区別しません.例えば、a、Aはb、Bの前に並んでいる.簡単なテストをしましょう:今、ユーザーを自然にソートする必要があります.So、親愛なる仲間たち、これはどうすればいいですか?アイデア:ユーザークラス(User)を作成し、Comparableインタフェースを実装してテストします.覚えていますよ:Collections.sort()リストをソートできます. Arrays.sort();配列を並べ替えることができますよ.へへへ、Let's do a test!
次に、Userクラスのコードを示します.
package test;
public class User implements Comparable{
private String name;
private Integer age;
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
/*
* name,
* , 1
* , age
* age: , 1
* , 0
* , -1
* : -1
* (non-Javadoc)
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
@Override
public int compareTo(User o) {
int flag = 0;
flag = this.getName().compareTo(o.getName());
if(flag == 0) {
flag = this.getAge().compareTo(o.getAge());
return flag;
}else {
return flag;
}
}
}
次はテストを行うコードUserTestです.
package test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class UserTest {
public static void print(List list) {
for(User u : list) {
System.out.println(u);
}
}
public static void print(User[] array) {
for(int i=0; i users = new ArrayList();
users.add(new User("a",12));
users.add(new User("C",25));
users.add(new User("B",12));
users.add(new User("A",15));
users.add(new User("b",19));
users.add(new User("c",17));
users.add(new User("a",22));
System.out.println(" :");
print(users);
System.out.println();
System.out.println();
System.out.println(" :");
Collections.sort(users);
print(users);
User[] users2 = new User[]{
new User("a",12),
new User("C",25),
new User("B",12),
new User("A",15),
new User("b",19),
new User("c",17),
new User("a",22)
};
System.out.println(" :");
print(users2);
System.out.println();
System.out.println();
System.out.println(" :");
Arrays.sort(users2);
print(users2);
}
}
皆さん、プログラムの実行結果は何ですか?
ははは、結果は:
A 15
B 12
C 25
a 12
a 22
b 19
c 17
:
a 12
A 15
a 22
B 12
b 19
c 17
C 25
, , , ? ? , ?!No, , , !
, User compareTo :
compareTo :flag = this.getName().compareTo(o.getName()); , !!! , !
?
,flag = this.getName().compareTo(o.getName()); compareTo , api String compareTo(String) , 、 、 !!!
:String compareTo(String) :
。 Unicode 。
。 Unicode 。
。 Unicode 。
? : , 。A Unicode a Unicode , A a 。
。
String compareTo(String) , !!! ? , compareToIgnoreCase(String) 。
: , 、 、 , !!!
, , ? ! :
User [name=a, age=12]
User [name=A, age=15]
User [name=a, age=22]
User [name=B, age=12]
User [name=b, age=19]
User [name=c, age=17]
User [name=C, age=25]
前の予想と同じではないでしょうか.ははは、今日はComparableインターフェースがここまで、ByeBye!!!
転載先:https://www.cnblogs.com/yorickLi/p/5950553.html