實現了Comparable接口, 重寫了 int compareTo(Object o)方法, 每次添加元素時, 調用此方法和集合內的元素進行比較
自定義類時, 須要實現Comparable接口, 並在這個類中重寫compareTo方法
綁定比較器 定製排序 class MyComparator implements Comparator<TreeSetBean2>{ public int compare(TreeSetBean2 o, TreeSetBean2 o2) { return o.age-o2.age; }}main方法中Set<TreeSetBean2> st = new TreeSet<TreeSetBean2>(new MyComparator());綁定比較器, 根據對象的number屬性比較
重寫compareTo方法 public int compareTo(Worker o) { if(this.age>o.age) { return -1; }else if(age<o.age) { return 1; }else { return 0; }}
本身控制條件,達到定製排序的一種方法
return (x<y) ? -1 ; ( (x==y) ? 0 ; 1) ;
Map接口實現類 key- value 若是value都是null,就變成List集合了
HashMap key部分也須要重寫equals和hashCode方法 HashMap<String,Integer> h = new HashMap<String, Integer>();h.put("語文", 90); //{語文=90}鍵值對h.put("語文", 88); //鍵相等,會覆蓋值h.put("數學", 87);h.put("英語", 85);Integer i = h.get("英語"); //根據key值獲取value值int c = hm.size(); //集合大小Set<String> s = h.keySet(); //獲取集合中全部鍵 [語文,數學,英語]Collection<Integer> c = h.values(); //獲取全部value值 [88,87,85]Integer i2 = h.remove("語文"); //根據key值移除 鍵值對h.clear(); //清除全部鍵值對 boolean b = h.containsKey("數學"); //判斷是否包含某個鍵boolean b1 = h.isEmpty(); //判斷是否爲空Set<Map.Entry<String, Integer>> se = h.entrySet();System.out.println(se);h.replace("數學",100);
遍歷 Map集合中常見遍歷方式 遍歷存放key值的SetSet<String> ss = map.keySet();再遍歷 遍歷存放value值的CollectionCollection<String> c = map.values();再遍歷 遍歷存放鍵值對的SetSet<Map.Entry<String, String>> ms = 8mp2.entrySet();
TreeMap
Iterator迭代器
iterator()返回的是Collection元素進行迭代的 迭代器
*必須與Collection結合綁定才能使用
Iterator 方法 Collection c = new ArrayList( );c.add("abc");c.add("ooo");c.add("sss");//c.size( )=3Iterator i = c.iterator( );//*綁定while(i.hasNext( )) { //遍歷期間不能用集合c直接操做 Object s = i.next( ); System.out.println(s);}
boolean hasNext( ); 檢查集合中是否有元素須要遍歷
Object next( ); 獲取遍歷到的當前元素
void remove( ); 將迭代器中返回的元素刪除
ListIterator雙向迭代器 只能遍歷ListArrayList<String> a = new ArrayList<String>();a.add("a");a.add("b");a.add("c");ListIterator i = a.listIterator( ); //綁定while(i.hasNext( )) { //從前日後迭代 Object str = i.next(); System.out.println(str);}while(i.hasPrevious( )) { //從後往前迭代 Object str = i.previous(); System.out.println(str);}
泛型
類名<具體的類型> 變量 = new 類名<>( );
自定義泛型類和自定義泛型方法
格式: 常見的表示泛型的字母 E V T K class Books<T>{ private T date; // T 爲自定義的類型 Books(T date){ this.date = date; } public T getDate( ) { return date; }}