JAvaソートとjsソート

3344 ワード

本文の一部のデータはネットの他の文章に由来して、本当の源を見分けることができなかったため、ここで引用住所を説明しないで、疑問があれば、伝言することができて、ありがとうございます.
一、javaがソートを実現する方法:
Javaでは、オブジェクトのあるメンバー変数に基づいて集合をソートする、ソートするクラスをインタフェースjavaに直接実装する2つのケースがある.lang.Comparable、もう一つはコンパレータjavaを使用する.util.Comparator.
要求:リストリストリスト、Personがあります.JAvaには2つの変数String nameとint ageがあります.リストをnameとageに基づいて昇順に並べ替えてください.
実装インタフェースjavaを使用します.lang.Comparableの方法でnameによるソートを完了し、比較器javaを使用する.util.Comparatorはageによるソートを完了します.
上のコード:
CompareMethods.JAvaは以下の通りです.
public class CompareMethods {
	public static void main(String[] args) {
		List list = new ArrayList();
		list.add(new Person("aaa",50));
		list.add(new Person("ccc",20));
		list.add(new Person("bbb",30));
		list.add(new Person("ddd",10));
		
		printList("   :",list);
		//      Collections.sort(list);     
		Collections.sort(list);
		printList("comparable  :",list);
		
		System.out.println("---------------   -------------------");
		
		printList("   :",list);
		//      Collections.sort(list,Comparator);     ,              
		Collections.sort(list,new PersonByComparator());
		printList("comparator  :",list);
	}
	/**
	 *       
	 */
	private static void printList(String mark,List list) {
		for(Person p : list) {
			System.out.println(mark+"name is:"+p.getName()+"       age is:"+p.getAge());
		}
	}
	
	/**
	 *           
	 */
	private static class PersonByComparator implements Comparator {
		@Override
		public int compare(Person o1, Person o2) {
			return o1.getAge() - o2.getAge();
		}
	}
}

Person.JAvaは以下の通りです.
public class Person implements Comparable{     private String name;     private int age;          public Person(String name,int age) {         this.name = name;         this.age = age;     }
    public String getName() {         return name;     }     public int getAge() {         return age;     }
    @Override     public int compareTo(Person o) {         //TODO Auto-generated method stub         return name.compareTo(o.getName());     } }
最終印刷結果は次のとおりです.
   :name is:aaa       age is:50
   :name is:ccc       age is:20
   :name is:bbb       age is:30
   :name is:ddd       age is:10
comparable  :name is:aaa       age is:50
comparable  :name is:bbb       age is:30
comparable  :name is:ccc       age is:20
comparable  :name is:ddd       age is:10
---------------   -------------------
   :name is:aaa       age is:50
   :name is:bbb       age is:30
   :name is:ccc       age is:20
   :name is:ddd       age is:10
comparator  :name is:ddd       age is:10
comparator  :name is:ccc       age is:20
comparator  :name is:bbb       age is:30
comparator  :name is:aaa       age is:50

二、jsがソートを実現する方法:
jsで実装される配列の並べ替えは、前述のjavaの2番目の並べ替え方式(比較器で並べ替え)と似ていますが、本稿では配列のみを並べ替えます.対象の並べ替えは筆者がまだ検討していません.良い方法があれば、メッセージを残してください.ありがとうございます.
指定された配列arrのうち,最も20に近い数字を探し出し,20からの差に従って小さいものから大きいものまで並べ替えることが要求される.
上のコード:
 
var arr = [1, 52, 23, 30, 26, 38, 59, 44, 15, 10];
var this_arr = 20;
arr.sort(function(a, b) {
  //Math.abs       
  return Math.abs(a - this_arr) - Math.abs(b - this_arr);
})
console.log(arr[0]);

コードのfunction(a,b)はjavaの比較器javaに似ている.util.Comparator