標籤:on() pre 好處 system rri alt xxx bin binary
一、Comparable介面, Collections類
List的常用演算法:
- sort(List); 排序,如果需要對自訂的類進行排序, 那就必須要讓其實現Comparable介面, 實現比較兩個類大小的方法
- shuffle(List); 隨機排列
- void reverse(List); 逆序排列(Linked效率較高)
- copy(); 複製集合, 前提是size()相同(長度, 和容量的區別)
- fill(List, Object);使用某個對象填充整個List
- binarySearch();//使用二分搜尋法之前先排序
例子:
package collectiontext;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class Text2 { @SuppressWarnings("unchecked") public static void main(String[] args) { List list = new ArrayList(); list.add("aaaa"); list.add("qqqq"); list.add("cccc"); list.add("xxxx"); System.out.println(list); System.out.println("-------------------------"); //順序排列 Collections.sort(list);//sort(List);排序,如果需要對自訂的類進行排序, 那就必須要讓其實現Comparable介面, //實現比較兩個類大小的方法 System.out.println(list); //隨機排列 Collections.shuffle(list);//shuffle(List); 隨機排列 System.out.println(list); //反轉排列(逆序排列) Collections.reverse(list);//void reverse(List); 逆序排列(Linked效率較高) System.out.println(list); System.out.println("-------------------------"); List list2 = new ArrayList(); list2.add("1"); list2.add("2"); list2.add("3"); list2.add("4"); Collections.copy(list2, list);//copy();複製集合, 前提是size()相同(注意長度, 和容量的區別) System.out.println(list2); System.out.println("-------------------------"); Collections.fill(list2, new Person());//fill(List, Object);使用某個對象填充整個List System.out.println(list2); System.out.println("-------------------------"); List list3 = new ArrayList(); for (int i = 0; i < 10; i++) { list3.add(i); } int a = Collections.binarySearch(list3, 8);//binarySearch();一定要注意,使用二分搜尋法之前先排序, //這裡剛好是排好序的,不好看出來,但是一定要注意 System.out.println(a); System.out.println(list3); }}class Person{ @Override public String toString() { return "Person []"; } }
二、泛型(Generic):裡面寫的一定是參考型別
1, 裝入集合的類型都被當作Object對待, 從而失去了自己的實際類型
2, 集合中取出來的時候需要轉型, 效率低, 易出錯
好處: 增強程式的可讀性和穩定性
例子:
package collectiontext;import java.util.ArrayList;import java.util.List;public class Text3 { public static void main(String[] args) { List<String> list = new ArrayList<String>();//這個list裡面只能裝String類型的東西 List<Person2> list2 = new ArrayList<Person2>();//這個list裡面只能裝Person2類型的東西 List<Student> list3 = new ArrayList<Student>(); list.add("qqq"); list2.add(new Person2()); list2.add(new Student());//Student繼承了Person,即父類的引用指向子類的對象,多態的問題 list3.add(new Student()); }}class Person2{ //定義了一個Person2類,通俗一點,就是定義了一個Person2類型 }class Student extends Person2{ }三、Comparable介面:一個方法(comparaTo)
int compareTo(T o)
將此對象與指定的對象進行比較以進行排序。
- 該對象小於指定對象,返回一個負整數(-1);
- 該對象等於指定對象,返回一個零(0);
- 該對象大於指定對象,返回一個正整數(1);
例子:
package collectiontext;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class Text4 { public static void main(String[] args) { List<Animals> list = new ArrayList<Animals>(); for (int i = 0; i < 5; i++) { list.add(new Animals("name" + i, i+5)); } System.out.println(list); Collections.sort(list); System.out.println(list); }}class Animals implements Comparable<Animals> { private String name; private int age; public Animals(String name, int age) { super(); this.name = name; this.age = age; } @Override public int compareTo(Animals o) { // TODO Auto-generated method stub if(this.age > o.age){ return -1; } else if(this.age < o.age){ return 1; } else{ return this.name.compareTo(o.name); } } @Override public String toString() { return "Animals [name=" + name + ", age=" + age + "]"; } }
Java基礎之Comparable介面, Collections類,Iterator介面,泛型(Generic)