1. 程式人生 > >集合, 陣列,Comparable,Comparator

集合, 陣列,Comparable,Comparator

//-Cell繼承 Comparable-------------------------------------------------
package day0811;

public class Cell implements Comparable<Cell>{
    int x;
    int y;
    public Cell(int x, int y) {
        this.x = x;
        this.y = y;
    }
    @Override
    public boolean equals(Object obj) {
        if
(obj==null){ return false; } if(obj==this){ return true; } if(obj instanceof Cell){ Cell c = (Cell)obj; return c.x==this.x && c.y==this.y; } return false; } @Override public String toString() { return
"("+x+","+y+")"; } /** * 比較大小的方法 * 返回值不不關注具體的值,只關注取值範圍 * 返回值<0:當前物件比給定物件小 * 返回值=0:兩個物件相等 * 返回值>0:當前物件比給定物件大 */ @Override public int compareTo(Cell o) { return this.y - o.y; } } //-集合的contains()方法-------------------------------------------------
package day0811; import java.util.ArrayList; import java.util.Collection; /** * 集合:List,可重複,有序 * Set 不可重複(一般無序,但也有有序的) */ public class CollectionDemo { public static void main(String[] args) { Collection<Cell> c = new ArrayList<Cell>(); Cell c3 = new Cell(3,4); c.add(new Cell(1,2)); c.add(new Cell(2,3)); c.add(c3); Cell c4 = new Cell(3,4); System.out.println(c3.equals(c4));//true /** * 是否包含給定元素,主要看equals方法 * equals比較為true的,即為包含 */ System.out.println(c.contains(c4));//true } } //-集合的addAll()、containsAll()方法------------------------------------------------- package day0811; import java.util.ArrayList; import java.util.Collection; public class CollectionDemo0 { public static void main(String[] args) { Collection<String> c1 = new ArrayList<String>(); c1.add("a"); c1.add("b"); c1.add("c"); Collection<String> c2 = new ArrayList<String>(); c2.add("one"); c2.add("two"); //批量把另一集合加過來 c1.addAll(c2); System.out.println(c1);//結果:[a, b, c, one, two] Collection<String> c3 = new ArrayList<String>(); c3.add("a"); c3.add("one"); //c1是否包含c3所有的元素 System.out.println(c1.containsAll(c3));//true } } //-集合的remove()方法------------------------------------------------- package day0811; import java.util.ArrayList; import java.util.Collection; public class CollectionDemo1 { public static void main(String[] args) { Collection<Cell> c = new ArrayList<Cell>(); c.add(new Cell(1,2)); c.add(new Cell(2,3)); c.add(new Cell(3,4)); c.add(new Cell(1,2)); Cell cell = new Cell(1,2); //Collection的remove()方法把比較equals是true的元素刪除 //並且只刪除第一個內容一樣的元素 c.remove(cell); System.out.println(c);//[(2,3), (3,4), (1,2)] } } //-集合的迴圈方法 (Iterator )------------------------------------------------- package day0811; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class CollectionDemo2 { public static void main(String[] args) { // 集合的迭代 //用HashSet也可 : Collection c = new HashSet(); Collection c = new ArrayList(); c.add("a"); c.add("b"); c.add("c"); c.add("d"); /** * Iterator是個介面 * 問,取,刪(刪不是必須) */ Iterator it = c.iterator(); //hasNext詢問迭代器是否還有元素 while(it.hasNext()){ Object obj = it.next(); String str = (String)obj; System.out.println(str); } } } //-集合中元素數量size(),以及是否不含元素isEmpty()------------------------------------------------- package day0811; import java.util.ArrayList; import java.util.Collection; public class CollectionDemo3 { public static void main(String[] args) { Collection<Cell> c = new ArrayList<Cell>(); int s = c.size();//集合中元素數量 System.out.println(s); System.out.println(c.isEmpty());//集合不含任何元素則為true c.add(new Cell(1,2)); c.add(new Cell(3,4)); System.out.println(c.size()); System.out.println(c.isEmpty()); c.clear();//清空集合中的元素 System.out.println(c.size()); System.out.println(c.isEmpty()); } } //-Iterator 刪除集合元素 it.remove()------------------------------------------------- package day0811; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class CollectionDemo4 { public static void main(String[] args) { Collection c = new ArrayList(); c.add("#"); c.add("C"); c.add("java"); c.add("#"); Iterator it = c.iterator(); while(it.hasNext()){ String str = (String)it.next(); if("#".equals(str)){ it.remove();//刪除元素 } } System.out.println(c);//[C, java] } } //-集合支援泛型,集合的高階for迴圈,以及Iterator迴圈------------------------------------------------- package day0811; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; /** * 所有集合都支援泛型,集合中的泛型用來定義集合的元素型別 */ public class CollectionDemo6 { public static void main(String[] args) { Collection<String> c = new ArrayList<String>(); c.add("a"); c.add("b"); c.add("c"); //高階for迴圈,遍歷集合中元素 for(String str: c){ System.out.println(str); } //Iterator也可定義泛型 Iterator<String> it = c.iterator(); while(it.hasNext()){ System.out.println(it.next()); } } } //-List的替換下標元素set,插入指定位置元素add(),刪除指定位置上的元素remove------ package day0811; import java.util.ArrayList; import java.util.List; public class ListDemo { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("one"); list.add("two"); list.add("three"); //List可以通過下表遍歷集合 for(int i=0;i<list.size();i++){ System.out.println(list.get(i)); } /** * T set (int index, T t) * 替換給定下標的元素 */ System.out.println(list);//[one, two, three] String old = list.set(1, "2"); System.out.println(list);//[one, 2, three] System.out.println("被替換的元素:"+old);//被替換的元素:two /** * void add(int index ,T t) * 插入元素,原位置以及後續的元素向後移動 */ list.add(1, "22"); System.out.println(list);//[one, 22, 2, three] /** * E remove(int index) * 刪除指定位置上的元素 */ String str1 = list.remove(1); System.out.println(list);//[one, 2, three] System.out.println("被刪的元素:"+str1);//被刪的元素:22 } } //-List的子集------------------------------------------------- package day0811; import java.util.ArrayList; import java.util.List; public class ListDemo1 { public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); for(int i=0;i<10;i++){ list.add(i); } System.out.println(list);//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] /** * 獲取當前集合的子集 * List subList(int start, int end) * (引數含頭不含尾) */ List<Integer> subList = list.subList(3, 8); System.out.println(subList);//[3, 4, 5, 6, 7] /** * 子集的元素全部乘以10 */ for(int i=0;i<subList.size();i++){ subList.set(i, subList.get(i)*10); } System.out.println(subList);//[30, 40, 50, 60, 70] //修改子集的任何元素都會影響原集合 System.out.println(list);//[0, 1, 2, 30, 40, 50, 60, 70, 8, 9] } } //-陣列轉成List------------------------------------------------- package day0811; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ToListDemo { public static void main(String[] args) { String[] array = {"1","2","3","4","5","6","7"}; List<String> list = Arrays.asList(array); System.out.println(list);//[1, 2, 3, 4, 5, 6, 7] //list.add("8");//出錯,不可新增新元素,因為list是隻讀的 //建立新的list2,可以增刪改 List<String> list2 = new ArrayList<String>(list); list2.add("8"); System.out.println(list2);//[1, 2, 3, 4, 5, 6, 7, 8] } } //-集合轉為陣列------------------------------------------------- package day0811; import java.util.ArrayList; import java.util.Collection; /** * 集合轉為陣列 * Collection定義了2個方法 * Object[] toArray() *<T>T[] toArray(T[] array) */ public class ListDemo2 { public static void main(String[] args) { Collection<String> c = new ArrayList<String>(); c.add("one"); c.add("two"); c.add("three"); c.add("four"); //不常用 //Object[] array = c.toArray(); /** * 常用,new String[0]不夠長就自動建立同類型的陣列 * 若長度夠,則使用給定的陣列 */ String[] array = c.toArray(new String[0]); for(String str : array){ System.out.println(str); } } } //-集合排序Collections.sort(list)--------------------------------- package day0811; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; public class SortCollectionDemo { public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); Random r = new Random(); for(int i=0;i<10;i++){ list.add(r.nextInt(100)); } /** * Collections:集合的工具類,可以對list集合排序 */ System.out.println(list); Collections.sort(list); System.out.println(list); } } //--集合排序 Collections Comparable----------------------------------- **package day0811; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class SortCollectionDemo1 { public static void main(String[] args) { List<Cell> list = new ArrayList<Cell>(); list.add(new Cell(4,5)); list.add(new Cell(1,7)); list.add(new Cell(1,2)); list.add(new Cell(3,3)); /** * 使用Collections的sort方法進行排序的集合 * 要求元素必須實現Comparable介面 * 只有實現了該接口才認為是可比較的元素 */ Collections.sort(list);//Cell裡實現了Comparable介面 System.out.println(list);//[(1,2), (3,3), (4,5), (1,7)] } } ** //--集合排序,Collections.sort(list, c);新建Comparator------------------ package day0811; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class SortCollectionDemo3 { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("小澤老師"); list.add("張三"); list.add("a"); list.add("範老師"); list.add("蒼#null"); System.out.println(list); Comparator<String> c = new MyComparator(); /** * 過載的sort方法,根據給定的比較器將給定的集合元素比較大小後進行排序 */ Collections.sort(list, c); System.out.println(list); } } //自定義比較器 class MyComparator implements Comparator<String>{ /** * 自定義比較字串規則:字串字元多的大 */ @Override public int compare(String o1, String o2) { return o1.length() - o2.length(); } }