首先說一下我對集合的認識,集合就相當於是乙個陣列,而這個陣列的元素型別是可以自己定義的,某個特定的集合有一些特殊的特點,長度是動態變化的,這點相對於陣列長度是固定的要好。
集合的作用:
1.在類的內部,對資料進行組織;
2.簡單而快速地搜尋大量數量的條目;
3.有的集合介面,提供了一系列排列有序的元素,並且可以在序列中間快速地插入或者刪除有關元素;
4.有的集合介面,提供了對映關係,可以通過關鍵字(可以)去快速查詢到對應的唯一物件,而這個關鍵字可以使任意型別。
集合的長度:可以動態變化。
集合的組成:
collection介面
是list,set和queue介面的父介面,list,set和queue是介面不能直接例項化
定義了可用於操作list,set和queue的方法--增刪改查
list介面及其實現類--arrylist
1. list是元素有序並且可以重複的集合,被稱為序列
2.list可以精確的控制每個元素的插入位置,或刪除某個位置元素
3.arraylist--陣列序列,是list的乙個重要實現類
4.arraylist底層是由陣列實現的
5.使用
(1)建立
list lt=new arraylist();//list是介面不能直接例項化,所以要用它的子類進行例項化
(2)新增元素
lt.add(元素);//新增乙個元素
lt.add(index,元素);//在index位置新增乙個元素
lt.addall(元素);//新增乙個元素陣列
例:course course=;
coursestoselect.addall(arrays.aslist(course));//public list coursestoselect,所以把陣列轉化為list
lt.addall(index,元素)//在index位置上新增乙個元素陣列
例:course course2=;
coursestoselect.addall(2,arrays.aslist(course2));
6.查詢
得到list的長度:int size=coursestoselect.size();
遍歷這個list可以用for迴圈乙個乙個的遍歷:
for(int i=0;i通過迭代器遍歷:
iterator it=coursestoselect.iterator();
system.out.println("通過迭代器訪問:");
while(it.hasnext())
通過for each遍歷
for(object obj:coursestoselect)
7.修改
coursestoselect.set(0, new course("7","毛概"));//把0位置上的元素改為 course("7","毛概")
8.刪除
以某個元素為依據進行刪除:
course cr=(course)coursestoselect.get(0);
coursestoselect.remove(cr);
以位置為依據進行刪除:
coursestoselect.remove(0);
刪除多個元素:
course courses=;
coursestoselect.removeall(arrays.aslist(courses));
我們已經說了這麼多了,有沒有發現我們根本沒有規定這個集合裡面放的元素是什麼型別的,那能放什麼型別的呢?因為這裡我們並沒有規定集合存放的資料型別,所以我們可以放很多態別的資料,但是一般情況下,我們建立乙個集合就是想要存放相同的資料型別,這就用到了泛型。接下來我們說一下泛型的使用。
1.建立
建立和有些像c++裡面的向量的宣告:public listcourses=new arraylist();
在建立時直接就宣告這個集合要承載的資料的資料型別。
其他的和不明確宣告是什麼型別大致是一樣的,泛型還有一點不一樣的就是,從泛型集合中取出元素是它不再是object型別了,它宣告是什麼型別那麼他取出來時就是什麼型別的。
set介面及其實現類--hashset
*set是元素無序並且不可重複的集合,被稱為集
*hashset--雜湊集,是set的乙個重要實現類
因為set是無序的,所以不能根據特定位置訪問某個元素或者修改某個元素。
map介面
*map提供了一種對映關係,其中的元素是以鍵值對(key-value)的形式儲存的,能夠實現根據key快速查詢value
*map中的鍵值對以entry型別的物件例項形式存在
*鍵(key值)不可重複,value值可以
*每個鍵最多只能對映到乙個值
*map介面提供了分別返回key值集合、value值集合以及entry(鍵值對)集合的方法
*map支援泛型,形式如:map
hashmap類
*hashmap是map的乙個重要的實現類,也是最常用的,基於雜湊表實現
*hashmap中的entry物件是無序排列的
*key值和value值都可以為null,但是乙個hashmap只能有乙個key值為null的對映(key值不可重複)
建立:public mapstudents=new hashmap();
新增元素:put(key,value);
keyset()方法就是把map中的所有key值對映到乙個set集合中
get(key)方法就是通過key值得到對應的value值
remove(key)通過key值刪除該元素
通過entryset遍歷map中元素:
set>entryset=students.entryset();
for(entryentry:entryset)
修改:通過put()方法,這時key值就是已經存在的
list的contains(元素)方法:判斷集合中是否包含某個元素,若包含則返回true,否則返回false
contains方法的實現原理:遍歷集合中的每乙個元素,然後呼叫equals方法進行比較。
list的indexof()方法:尋找特定元素在集合中的索引位置,實現原理:從第乙個元素遍歷集合,並呼叫equals方法與一直元素比較如果相等則返回當前索引位置,所以當集合中有多個一樣的元素是只返回第乙個元素的位置;相反的還有乙個是lastindexof(),返回最後一次出現的索引位置。這兩個方法,當找不到元素時都返回-1。
map的containskey(key)判斷集合中是否包含此key值,containsvalue(value)判斷是否包含此value值。
collections工具:
*sort()方法:collections.sort(集合名稱),就將該集合進行排序了。
注意:
物件存入集合都變成object型別,取出時需要型別轉化。
在使用集合時,若使用泛型,則存入集合時的物件只能是泛型宣告時的型別或其子型別,存放其他型別時會報錯,取出時的型別則為宣告時規定的型別。
在子類繼承父類時,子類會呼叫父類的無參構造器,若父類沒有無參構造器就會報錯。
在使用泛型時不能使用基本資料型別宣告,若要使用需要使用其包裝型別。例如:public listlt=new arraylist();
node 慕課網學習
簡寫 npm i 安裝 npm un 刪除 path.dirname node a b c 1.jpg 擷取路徑 結果是 node a b c path.basename node a b c 1.jpg 擷取路徑後面的 結果 1.jpg path.extname node a b c 1.jpg ...
2017 2 14 慕課網學習PHP
php條件結構之switch case 中的break break的作用是阻止 進入下乙個case 中繼續執行。php中迴圈結構之while迴圈語句 在php中,while迴圈語句如下 while 條件 過程 首先判斷某個條件是否符合 條件返回值是否為true 若符合則執行任務,執行完畢任務,再判斷...
AJAX學習筆記(慕課網)
一 建立xhr物件 xhr物件支援ie6以上 五 例子 六 json 1.json解析和校驗 json解析 var josnobj json.parse josondata alert jsonobj.staff 0 name 2.json校驗 jsonlint 七 jquery中的ajax 八 跨...