標籤:one map介面 操作 ext .sh 位置 增強 print ISE
一.泛型(Generic)
由於放入集合中的元素預設都是Object類型,無法看出其本身自有的類型,當對這些元素進行操作時需要轉型才可用,這樣效率低還易出錯,在JDK1.5版本後引入泛型,規定了此集合中的元素類型,增強了程式的可讀性和穩定性。
格式:用<>表示,定義的類型必須是參考型別。後面的<>可以省略。
List<Book> list1 = new ArrayList<Book>();
二.Map介面的常用方法
Map介面提供了將鍵映射到值的對象。一個映射不能包含重複的鍵,每個鍵最多隻能映射到一個值,Map中的元素是通過鍵(key)值(value)對的形式進行儲存的。
Map介面也有兩個子類實作類別HashMap(雜湊表做索引)和TreeMap(二叉樹做索引)。
HashMap常用方法:
public class Test{ public static void main(String[] args) { Map<Object,Object> map1 = new HashMap<Object,Object>(); //建立HashMap類集合; map1.put(Object key, Object value); //向集合中添加指定的key與value的映射關係;其傳回值是是替換出來的value; map1.get(Object key); //擷取指定鍵所對應的值; map1.remove(Object key); //刪除指定鍵所對應的值;傳回值為該值; map1.remove(Object key,Object value); //刪除指定鍵及其所對應的值;如刪除成功返回true,否則返回false; map1.containsKey(Object key); //判斷是否包含某個鍵,有返回true,沒有返回false; map1.containsValue(Object value); //判斷是否包含某個值,有返回true,沒有返回false; map1.size(); //擷取該集合中有幾對映射; map1.isEmpty(); //判斷該集合中是否有元素; map1.putAll(Map m); //將另一個集合中的元素放入該集合; map1.clear(); //清除該集合中所有元素; map1.keySet(); //擷取該集合中所有鍵組成的Set集合; map1.values(); //擷取該集合中所有值對象組成的Collection集合; //擷取map集合中的索引值對也可通過遍曆方法得到,由於Set類集合沒有順序,需要調用list中的構造方法 Set<Object> set1 = map1.keySet(); List<Object> list1 = new ArrayList(set1); for (int i = 0; i < list1.size(); i++) { Object o1 = list1.get(i); Object o2 = map1.get(o1); } }}
三.迭代器
為了能夠遍曆所有集合類型中的元素,優先使用Iterator介面建立迭代器,Iterator介面是所有集合的父類。
Iterator介面中只有3個方法:
1.hashNext():如果仍有元素可以迭代,返回true;
2.next():返回迭代的下一個元素;
3.remove():從迭代器指向的collection中移除迭代器返回的最後一個元素;
注意:迭代器中的remove方法, 絕對不可以與list中的remove(Object)方法混用,會拋出ConcurrentModificationException這個異常。
舉例說明:
public class Test{ public static void main(String[] args) { List<String> list = new ArrayList(); list.add("qqqq"); list.add("wwww"); list.add("eeee"); Iterator<String> iter = list.iterator(); while(iter.hasNext()) { String s = iter.next(); System.out.println(s); if (s.equals("wwww")) { iter.remove(); } } System.out.println(list); }}
輸出結果為:
qqqqwwwweeee[qqqq, eeee]
四.Collections類
public class Test{ public static void main(String[] args) { List<Integer> list1 = new ArrayList<Integer>(); List<Integer> list2 = new ArrayList<Integer>(); Collections.sort(list1);//預設從小到大排序; Collections.shuffle(list1);//隨機排序; Collections.reverse(list1);//從大到小排序; Collections.copy(list1, list2);//將list2中的元素複製到list1中,前提是list1中的元素個數不得大於list2中的元素個數; Collections.fill(list1, Integer);//將list1中的所有元素填充為同一類型的相同元素; Collections.sort(list1);//對list1中的所有元素進行排序; Collections.binarySearch(list1, key);//二分尋找法,尋找list1中的key元素位置,需要先對元素進行排序; }}
JAVA 集合類2-MAP介面與迭代器