容器類基礎篇(一)

容器類:用來解決數組具有固定尺寸而使得靈活性受限的問題。基本的容器類(集合類)有:List、Set、Queue、Map。

Java容器類類庫的用途是用來“保存對象”,這分為兩個不同的大類:

1.Collection(集合的根接口)
2.Map:每個槽內保存了兩個對象,即鍵/值對。


它們的區別在于容器中每個“槽”可以保存的元素個數。Collection的每個槽只能保存一個元素。此類容器包括:
1)List:以特定的順序保存一組元素
2)Set:元素不能重復
3)Queue:只允許在容器的一“端”插入對象,并從另一“端”移除對象

最早在學習泛型類的時候接觸過的容器類有:ArrayList。使用add()和get(index)來添加和訪問對象,set(index,element)修改對象,size()返回當前容器中添加了多少個元素,相當于長度。注:ArrayList是一個實現了Collection接口的類。

?

復習一下關于ArrayList的兩種定義方法:

方法一:ArrayList list = new ArrayList()

這樣存進去的對象默認都是Object類型的,但在當使用get取出時必須進行類型轉換,否則是Object的引用。

方法二:ArrayList<T> list = new ArrayList<T>()
在最開始就預定義了類型,這樣get時就不需要進行顯示類型轉換。
當指定了類型T時,并不僅限于只能該確切的T類對象放置到容器中,可以向上轉型。即可以存放T的子類對象到容器中。

下面是一個ArrayList操作的小例子:

 1 import java.util.ArrayList;
 2 public class A {
 3     public static void main(String[] args) {
 4         ArrayList<Basic> list = new ArrayList<Basic>();
 5         list.add(new Z1());
 6         list.add(new Z2());
 7         list.add(new Z3());
 8         for(Basic b:list){
 9             System.out.println(b);
10         }
11     }
12 }
13 class Basic{}
14 class Z1 extends Basic{};
15 class Z2 extends Basic{};
16 class Z3 extends Basic{};


前面介紹過Collection容器類是用來保存對象的集合,那么如何往Collection中添加對象呢?方法是很多的,下面介紹了4種常見方法:

1.add()
2.Arrays.asList(數組/元素列表): 接受一個數組或者是用逗號分割的元素列表,將其轉換成一個List對象。
3.使用靜態類Collections中的addAll(collection,數組/元素列表)方法
4.直接用Arrays.asList()輸出,將其當作是List。但其實底層還是數組,因此不能調整尺寸。可以用set()來修改元素,但不能用add()添加,否則會報異常。

Collection添加元素的Demo:

 1 import java.util.ArrayList;
 2 import java.util.Arrays;
 3 import java.util.Collection;
 4 import java.util.Collections;
 5 import java.util.List;
 6 
 7 public class A {
 8     public static void main(String[] args) {
 9         // 元素列表
10         Collection<Integer> c = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));
11 
12         // 接受一個數組轉換成List
13         Integer[] moreInts = { 6, 7, 8, 9, 10 };
14         c.addAll(Arrays.asList(moreInts));
15 
16         // 使用靜態類Collections中的方法
17         Collections.addAll(c, 11, 12, 13, 14, 15);
18 
19         // addAll方法也可以接受數組
20         Collections.addAll(c, moreInts);
21         
22         
23          //foreach方式打印
24           for(Integer i: c){ System.out.print(i+"  "); }
25          
26 
27         // 直接用Arrays.asList()輸出
28         List<Integer> list = Arrays.asList(moreInts);
29         list.set(0, 1);
30         /*    
31          * list.add(100);    
32          * 這條編譯不通過,原因是底層仍舊是一個數組,不能更改尺寸
33         */
34         
35         //容器類默認打印方式
36         System.out.println(list);
37 
38     }
39 }

容器的默認打印行為:默認調用toString(),打印的結果用中括號括起來。如:上面例子最后一條 [1, 7, 8, 9, 10]

轉載于:https://www.cnblogs.com/devilfree/archive/2012/09/16/2687886.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260405.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260405.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260405.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

阿里MySQL讀寫一致_阿里面試題:如何保證緩存與數據庫的雙寫一致性?

作者&#xff1a;你是我的海嘯出處&#xff1a;https://blog.csdn.net/chang384915878/article/details/86756463只要用緩存&#xff0c;就可能會涉及到緩存與數據庫雙存儲雙寫&#xff0c;你只要是雙寫&#xff0c;就一定會有數據一致性的問題&#xff0c;那么你如何解決一致性…

反射小應用之DataTable和ListT互操作

反射小應用之DataTable和List<T>互操作 在程序中&#xff0c;往往會遇到一些小情況&#xff0c;就是數據庫取出來的時候為了方便直接將數據通過存儲在DataSet或DataTable中&#xff0c;這樣做的一個后果是在日后的的對數據進行”細“操作時&#xff0c;就發現它可能沒有L…

python適合什么樣的人群_什么樣的人比較適合選擇Python開發+人工智能技術?

原標題&#xff1a;什么樣的人比較適合選擇Python開發人工智能技術&#xff1f; 互聯網行業最近幾年來確實成為了競相追捧的行業&#xff0c;人工智能、大數據的不斷發展讓Python開發技術成為了繼Java開發之后的又一熱門編程語言。我們都知道&#xff0c;想要學習Python開發編程…

java 8 方法引用(method references)

1 什么是方法引用&#xff08;method references&#xff09;java 8 添加了一個很熟悉但是又很陌生的符號::。 你也許會看到這樣的代碼System.out::println其實就是方法引用&#xff08;method references&#xff09;。由于java 8 把方法/函數也作為第一輸入參數。所以你會看到…

SWT中Button事件的幾種不同寫法

1&#xff0e;匿名內部類寫法button.addSelectionListener(new SelectionAdapter(){Overridepublic void widgetSelected(SelectionEvent e){.....}});釋&#xff1a;當button被單擊時&#xff0c;底層就會檢查button是否注冊了相對就的監聽器&#xff0c;如果有&#xff0c;底…

python中fetchall函數_python中查詢數據庫時fetchone()函數和fetchall()函數的區別

我們在用python操作數據庫的時候,經常會碰見兩個函數:fetchone()和fetchall()剛開始學習的時候可能會搞不清楚他們兩個的區別其實非常簡單首先fetchone()函數它的返回值是單個的元組,也就是一行記錄,如果沒有結果,那就會返回null其次是fetchall()函數,它的返回值是多個元組,即返…

文字對齊格式

text-align:justify; letter-spacing:5px; line-height:40px; text-indent:40px 轉載于:https://www.cnblogs.com/mrcln/p/3757148.html

excel vba 從入門到精通_VBA詞匯-基本元素篇

在公眾號發布學習VBA需要哪些基礎知識這篇文章后&#xff0c;有朋友給我們留言&#xff0c;希望可以出一份VBA基礎的英語知識貼。其實相關的內容我們會在后面所對應知識點一一進行講解&#xff0c;提前劇透其實會少很多學習未知知識的樂趣哦~ 我們會將所涉及的基礎單詞和其說明…

jQuery基礎:remove()與 detach()區別

1、detach&#xff08;&#xff09; detach() 方法移除被選元素&#xff0c;包括所有文本和子節點。這個方法會保留 jQuery 對象中的匹配的元素&#xff0c;因而可以在將來再使用這些匹配的元素。detach() 會保留所有綁定的事件、附加的數據&#xff0c;這一點與 remove() 不同…

python保存模型 特征_Pytorch提取模型特征向量保存至csv的例子

Pytorch提取模型特征向量# -*- coding: utf-8 -*-"""dj"""import torchimport torch.nn as nnimport osfrom torchvision import models, transformsfrom torch.autograd import Variableimport numpy as npfrom PIL import Imageimport torchvi…

Matlab畫圖-非常具體,非常全面

Matlab畫圖 強大的畫圖功能是Matlab的特點之中的一個&#xff0c;Matlab提供了一系列的畫圖函數&#xff0c;用戶不須要過多的考慮畫圖的細節&#xff0c;僅僅須要給出一些基本參數就能得到所需圖形&#xff0c;這類函數稱為高層畫圖函數。此外&#xff0c;Matlab還提供了直接對…

openfeign使用_Feign使用基于配置服務發現

之前寫了篇《Feign在實際項目中的應用實踐總結》Feign在實際項目中的應用實踐總結 - 沐風之境 - 博客園?www.cnblogs.com總結了在一般項目中如何使用Feign這個提升開發效率的利器。最近在看Feign的文檔的時候發現了之前遺漏的一些點&#xff0c;所以寫了這篇文章進行補充。pom…

Oracle按用戶進行統計信息更新

按用戶進行統計信息更新 PL/sqldev工具使用system用戶連接到oracle&#xff0c;打開命令窗口執行以下SQL&#xff0c;用戶名請根據實際情況進行更改&#xff1a; begin dbms_stats.gather_schema_stats( ownname > testuser, estimate_percent > dbms_stats.aut…

個人使命宣言

最近在閱讀《高效人士的7個習慣》&#xff0c;其中提到個人使命宣言&#xff0c;也就是個人的行為憲法&#xff0c;有了這個憲法我們在日常生活和工作中才能有法可循有法可依&#xff0c;才不至于在紛繁的社會中迷失自己。通過思考自我感覺制作個人使命宣言還是非常有用的&…

jq js json 轉字符串_JS中JSON對象和String之間的互轉及處理技巧

json&#xff1a;JavaScript 對象表示法(javascript Object Notation)&#xff0c;其實JSON就是一個javaScript的對象(Object)而已。如有不清楚JSON&#xff0c;可以去w3cschool了解http://www.w3school.com.cn/json/1.在Javascript中新建一個字符串(JSON文本)。 var txt { &q…

php中__autoload()方法詳解

原文地址&#xff1a;http://www.php100.com/html/php/lei/2013/0905/5267.html[導讀] PHP在魔術函數__autoload()方法出現以前&#xff0c;如果你要在一個程序文件中實例化100個對象&#xff0c;那么你必須用include或者require包含進來100個類文件&#xff0c;或者你把這100個…

python讀取sql_從python讀取sql的實例方法

從python讀取sql的方法&#xff1a; 1、利用python內置的open函數讀入sql文件&#xff1b; 2、利用第三方庫pymysql中的connect函數連接mysql服務器&#xff1b; 3、利用第三方庫pandas中的read_sql方法讀取傳入的sql文件即可。 python 直接讀取 sql 文件&#xff0c;達到使用 …

我笨,但我不傻

2019獨角獸企業重金招聘Python工程師標準>>> 威哥說&#xff1a;很多朋友給我留言&#xff0c;在學習的過程中如何堅持下去&#xff0c;關于努力和目標&#xff0c;我想談談自己的理解&#xff0c;有不同見解的地方&#xff0c;歡迎留言跟我探討哈。 if(努力苦逼) r…

GNU make manual 翻譯( 一百零四)

繼續翻譯 4.7 Rules without Recipes or Prerequisites If a rule has no prerequisites or recipe, and the target of the rule is a nonexistent file, then make imagines this target to have been updated whenever its rule is run. This implies that all targets dep…

mysql 數字 除以 一萬_騰訊股票接口、和訊網股票接口、新浪股票接口、雪球股票數據、網易股票數據...

騰訊股票接口&#xff1a;大單數據http://stock.finance.qq.com/sstock/list/view/dadan.php?tjs&csz002451&max80&p1&opt10&o0opt10 11 12 13 分別對應成交額大于等于(100萬 200萬 500萬 1000萬)opt1,2,3,4,5,6,7,8 分別對應成交量大于等于(100手 200手 …