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;
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