国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

第4章 集合類

2019-11-14 15:09:17
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

 

java提供了一種可以存數(shù)一組數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),其提供了豐富的方法,在實(shí)際開(kāi)發(fā)中往往比數(shù)組使用的廣泛。這種數(shù)據(jù)結(jié)構(gòu)成為集合:Collection。

Collection是一個(gè)接口,其定義了集合的相關(guān)功能方法。

 

List接口是Collection的子接口,用于定義線性表數(shù)據(jù)結(jié)構(gòu);

可以將List理解為存放對(duì)象的數(shù)組,只不過(guò)其元素個(gè)數(shù)可以動(dòng)態(tài)的增加或減少。并且List是可重復(fù)集.

List接口的兩個(gè)常見(jiàn)實(shí)現(xiàn)類為ArrayList和LinkedList,分別用動(dòng)態(tài)數(shù)組和鏈表的方式實(shí)現(xiàn)了List接口。

可以認(rèn)為ArrayList和LinkedList的方法在邏輯上完全一樣,只是在性能上有一定的差別,ArrayList更適合于隨機(jī)訪問(wèn)而LinkedList更適合于插入和刪除;在性能要求不是特別苛刻的情形下可以忽略這個(gè)差別。

 

4.1 List接口——有序集合類 279


4.1.1 add方法——向列表中插入元素 279

 

 List<String> list = new ArrayList<String>();        list.add("java");                list.add("cpp");                list.add("php");        list.add("c#");                list.add("objective-c");


4.1.2 addAll方法——將指定collection添加到列表中 280

 

 List<String> list = new ArrayList<String>();        list.add("java");                list.add("cpp");                list.add("php");        list.add("c#");                list.add("objective-c");                //addAll方法用于將給定集合中的所有元素添加到當(dāng)前集合中        List<String> list2 = new ArrayList<String>();        list2.addAll(list);                System.out.PRintln(list2);

 

4.1.3 clear方法——從列表中移除所有元素 282
4.1.4 contains方法——判斷列表中是否包含指定元素 283
4.1.5 containsAll方法——判斷列表中是否包含指定collection所有元素 283
4.1.6 equals方法——比較指定的對(duì)象與列表是否相等 285

 


4.1.7 get方法——獲取列表指定位置的元素 285
4.1.8 set方法——替換列表中指定位置的元素 286

 

 List<String> list = new ArrayList<String>();        list.add("java");                list.add("cpp");                list.add("php");        list.add("c#");                list.add("objective-c");        // get方法遍歷List        for (int i = 0; i < list.size(); i++) {            System.out.println(list.get(i));        }         String value = list.set(1, "c++");        System.out.println(value); // cpp        System.out.println(list); // [java, c++, php, c#, objective-c]         // 交換位置1和3上的元素        list.set(1, list.set(3, list.get(1)));        System.out.println(list);         // [java, c#, php, c++, objective-c]

 

4.1.9 hashCode方法——返回列表的哈希碼值 287
4.1.10 indexOf方法——返回第一次出現(xiàn)指定元素的位置 287
4.1.11 lastIndexOf方法——返回最后一次出現(xiàn)指定元素的位置 288
4.1.12 isEmpty方法——判斷集合是否為空 289

 


4.1.13 iterator方法——返回迭代器 290
4.1.14 listIterator方法——返回列表迭代器 290

Collection提供了一個(gè)遍歷集合的通用方式,迭代器(Iterator)。獲取迭代器的方式是使用Collection定義的方法:

迭代器Iterator是一個(gè)接口,集合在覆蓋Collection的iterator()方法時(shí)提供了迭代器的實(shí)現(xiàn)。

Iterator提供了統(tǒng)一的遍歷集合元素的方式。

迭代器用于遍歷集合的兩個(gè)主要方法:

  • boolean hasNext():判斷集合是否還有元素可以遍歷。
  • E next():返回迭代的下一個(gè)元素

遍歷集合應(yīng)遵循“先問(wèn)后取”的方式,也就是說(shuō),應(yīng)當(dāng)在確定hasNext()方法的返回值為true的情況下再通過(guò)next()方法取元素。

由此可以看出,使用迭代器遍歷集合是通過(guò)boolean值驅(qū)動(dòng)的,所以它更適合使用while循環(huán)來(lái)遍歷。

 

 Collection<String> c = new HashSet<String>();        c.add("java");                c.add("cpp");                c.add("php");        c.add("c#");                c.add("objective-c");        Iterator<String> it = c.iterator();        while (it.hasNext()) {            String str = it.next();            System.out.println(str);        } 

 

 


4.1.15 remove方法——移除列表中的指定元素 292
4.1.16 removeAll方法——從列表中移除指定collection包含的所有元素 293

 

 List<String> list = new ArrayList<String>();        list.add("java");        list.add("c#");        System.out.println(list); // [java, c#]                         list.add(1, "cpp");        System.out.println(list); // [java, cpp, c#]                         list.remove(2);        System.out.println(list); // [java, cpp]               list.removeAll(list);        System.out.println(list);


4.1.17 retainAll方法——保留指定collection包含的所有元素 294
4.1.18 size方法——返回列表中元素的個(gè)數(shù) 294


4.1.19 subList方法——獲取列表中指定范圍的子列表 295

 

List的subList方法用于獲取子List。需要注意的是,subList獲取的List與原List占有相同的存儲(chǔ)空間,對(duì)子List的操作會(huì)影響的原List。

 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<Integer> subList = list.subList(3, 8);        System.out.println(subList); // [3, 4, 5, 6, 7]         // subList獲得的List和源List占有相同的數(shù)據(jù)空間        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]         // 可以用于刪除連續(xù)元素list.subList(3, 8).clear();        System.out.println(list);


4.1.20 toArray方法——返回所有元素的數(shù)組 296

List的toArray方法用于將集合轉(zhuǎn)換為數(shù)組。但實(shí)際上該方法是在Collection中定義的,所以所有的集合都具備這個(gè)功能。

我們可以傳入一個(gè)指定類型的數(shù)組,該數(shù)組的元素類型應(yīng)與集合的元素類型一致。返回值則是轉(zhuǎn)換后的數(shù)組,該數(shù)組會(huì)保存集合中所有的元素。

 List<String> list = new ArrayList<String>();        list.add("a");        list.add("b");        list.add("c");        //通常我們傳入的數(shù)組不需要給定長(zhǎng)度        String[] strArr = list.toArray(new String[] {});                System.out.println(Arrays.toString(strArr)); // [a, b, c]

 

數(shù)組轉(zhuǎn)化為list

//方法一        String[] strArr = { "a", "b", "c" };         List<String> list = Arrays.asList(strArr);        System.out.println(list); // [a, b, c]        // list.add("d"); // 會(huì)拋出UnsupportedOperationException         //     java.util.Arrays$ArrayList         System.out.println(list.getClass().getName());                             //方法二        List<String> list1 = new ArrayList<String>();        list1.addAll(Arrays.asList(strArr));         list1.add("d");        System.out.println(list1);

 

 


4.2 Map接口——映射集合類 297


4.2.1 clear方法——移除所有映射關(guān)系 297
4.2.2 containsKey方法——判斷是否包含指定的鍵名 298
4.2.3 containsValue方法——判斷是否包含指定的鍵值 298
4.2.4 equals方法——判斷是否與指定的對(duì)象相同 299
4.2.5 get方法——返回指定鍵所映射的值 300
4.2.6 isEmpty方法——判斷是否為空 300
4.2.7 keySet方法——獲取Map集合的所有key 301
4.2.8 put方法——向指定索引位置添加對(duì)象 301
4.2.9 putAll方法——追加另一個(gè)Map對(duì)象到當(dāng)前Map集合 302
4.2.10 remove方法——移除Map集合中指定鍵名的內(nèi)容 303
4.2.11 size方法——獲取Map集合類的大小 304
4.2.12 values方法——獲取Map集合中所有鍵值對(duì)象 304


4.3 Set接口——無(wú)重復(fù)元素集合類 305


4.3.1 add方法——向Set集合中添加對(duì)象 305
4.3.2 addAll方法——向Set集合添加另一個(gè)集合的所有內(nèi)容 306
4.3.3 clear方法——從Set集合中移除所有內(nèi)容 307
4.3.4 contains方法——判斷Set集合是否包含指定對(duì)象 307
4.3.5 containsAll方法——判斷Set集合是否包含另一個(gè)集合中全部對(duì)象 308
4.3.6 equals方法——比較指定對(duì)象與此Set是否相等 309
4.3.7 isEmpty方法——判斷Set集合是否為空 309
4.3.8 iterator方法——獲取Set集合的迭代器 310
4.3.9 remove方法——移除Set集合中指定對(duì)象 311
4.3.10 removeAll方法——移除另一個(gè)集合所包含的所有內(nèi)容 311
4.3.11 retainAll方法——保留另一個(gè)集合所包含的所有內(nèi)容 312
4.3.12 size方法——獲取Set集合類的大小 313
4.3.13 toArray方法——用Set集合的所有對(duì)象創(chuàng)建數(shù)組 313

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 永安市| 府谷县| 绵阳市| 鹤峰县| 延庆县| 龙州县| 古交市| 临桂县| 镇宁| 调兵山市| 乌拉特中旗| 名山县| 鱼台县| 安义县| 芮城县| 郁南县| 鱼台县| 习水县| 晋州市| 呼和浩特市| 和田县| 宁波市| 镇安县| 原平市| 石泉县| 祁阳县| 南郑县| 梧州市| 原阳县| 舒兰市| 天全县| 靖宇县| 潍坊市| 石景山区| 临高县| 舟山市| 东乡县| 长沙县| 苍溪县| 滁州市| 灌云县|