摘要:集合中的集合是一種工具類,就像是容器,存儲(chǔ)任意數(shù)量的具有共同屬性的對(duì)象集合的作用在類的內(nèi)部,對(duì)數(shù)據(jù)進(jìn)行組織簡(jiǎn)單而快速的搜索大量數(shù)目的條目有的集合接口,提供了一系列排列有序的元素,并且可以在序列中進(jìn)行快速的插入和刪除有些集合接口,提供了映射關(guān)
集合
java中的集合: 是一種工具類,就像是容器,存儲(chǔ)任意數(shù)量的具有共同屬性的對(duì)象
集合的作用
1. 在類的內(nèi)部,對(duì)數(shù)據(jù)進(jìn)行組織 2. 簡(jiǎn)單而快速的搜索大量數(shù)目的條目 3. 有的集合接口,提供了一系列排列有序的元素,并且可以在序列中進(jìn)行快速的插入和刪除 4. 有些集合接口,提供了映射關(guān)系,可以通過(guò)關(guān)鍵字key去快速的查找到對(duì)應(yīng)的唯一對(duì)象
集合和數(shù)組的區(qū)別
1. 數(shù)組的長(zhǎng)度是固定的,但是集合可變 2. 數(shù)組只能通過(guò)數(shù)組下標(biāo)查找,類型固定,而有的集合可以通過(guò)任意類型查找所映射的對(duì)象java集合的框架 Collection 接口
Collection接口 是List、Set、Queue的父接口,
List接口之ArrayList
1. List是元素有序并且可重復(fù)的集合,被稱為是序列 2. List可以精準(zhǔn)控制每個(gè)元素的插入和刪除 3. ArrayList --數(shù)組序列,是一個(gè)重要實(shí)現(xiàn)類 4. ArrayList底層是數(shù)組實(shí)現(xiàn)的
ArrayList的增刪改查
package com.collection; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; /** * 備選課程類 * @author zjj * ArrayList的增刪改查 * */ public class ListTest { private List coursesList; // 備選課程列表 public ListTest() { this.coursesList = new ArrayList(); } public List getCoursesList() { return coursesList; } public void setCoursesList(List coursesList) { this.coursesList = coursesList; } // 添加課程 public void listAdd() { // 添加一個(gè)課程 course c1 = new course("1", "c語(yǔ)言"); coursesList.add(c1); course temp = (course)coursesList.get(0); System.out.println("添加了課程:"+temp.getId()+";"+temp.getName()); course cr2=new course("2","數(shù)據(jù)結(jié)構(gòu)"); coursesList.add(0,cr2); course temp2=(course)coursesList.get(1); System.out.println("添加了課程:"+temp2.getId()+";"+temp2.getName()); /**course cr2=new course("2","C語(yǔ)言"); coursesList.add(4,cr2); 報(bào)錯(cuò),數(shù)組下標(biāo)越界*/ // 添加一個(gè)數(shù)組進(jìn)去 course [] course = {new course("3","離散"), new course("4","毛概")}; coursesList.addAll(Arrays.asList(course)); course temp3 = (course) coursesList.get(2); course temp4 = (course) coursesList.get(3); System.out.println("添加了課程:"+temp3.getId()+";"+temp3.getName()); System.out.println("添加了課程:"+temp4.getId()+";"+temp4.getName()); course [] course1 = {new course("5","網(wǎng)絡(luò)"), new course("6","信息")}; coursesList.addAll(2,Arrays.asList(course1)); course temp5 = (course) coursesList.get(2); course temp6 = (course) coursesList.get(3); System.out.println("添加了課程:"+temp5.getId()+";"+temp5.getName()); System.out.println("添加了課程:"+temp6.getId()+";"+temp6.getName()); } /** * for循環(huán)遍歷List */ public void testGet() { int len = coursesList.size(); // 獲取到ArrayList的長(zhǎng)度 System.out.println("========================="); for(int i = 0; i < len; i++) { course temp = (course) coursesList.get(i); System.out.println("添加了課程:"+temp.getId()+";"+temp.getName()); } } /** * 通過(guò)迭代器來(lái)遍歷List */ public void Listget() { Iterator it = coursesList.iterator(); // 迭代器方法 System.out.println("==========迭代器==============="); while(it.hasNext()) { course lt = (course) it.next(); System.out.println("添加了課程:"+lt.getId()+";"+lt.getName()); } } /** * 通過(guò)foreach遍歷 */ public void testForEach() { System.out.println("==========forEach循環(huán)==============="); for(Object obj :coursesList) { course cr = (course) obj; System.out.println("添加了課程:"+cr.getId()+";"+cr.getName()); } } /** * 修改課程 */ public void modify() { coursesList.set(2, new course("10", "修改的name")); } /** * 刪除課程 */ public void delete() { course cr = (course) coursesList.get(4); coursesList.remove(cr); // coursesList.remove(4); 效果同上 // 同時(shí)刪除多個(gè) course [] courses = {(course) coursesList.get(1), (course) coursesList.get(2)}; coursesList.removeAll(Arrays.asList(courses)); } }
泛型管理
1.集合中的元素是可以是任意類型的對(duì)象,如果把這個(gè)對(duì)象放入集合,則會(huì)忽略它的類別,而把他當(dāng)作是一個(gè)Object來(lái)處理,這也就是我們?yōu)槭裁葱枰M(jìn)行強(qiáng)制類型轉(zhuǎn)換為course的原因了
2.泛型則是規(guī)定了某一個(gè)集合中只能存放某些特定類型的對(duì)象,會(huì)在編譯期間進(jìn)行類型檢查,可以直接按照指定的類型獲取元素
package com.collection; import java.util.ArrayList; import java.util.List; /** * 測(cè)試泛型 * @author zjj * */ public class testGeneric { // 泛型就是在<>中寫(xiě)明規(guī)定的類型 public ListcourseList; public testGeneric() { this.courseList = new ArrayList (); } public void add () { course c = new course("1","語(yǔ)文"); courseList.add(c); } public void forEach() { // 注意這里,我們可以直接使用course,不需要先寫(xiě)成Object,再?gòu)?qiáng)轉(zhuǎn) for(course c: courseList) { System.out.println("課程:" +c.getId()+";"+c.getName()); } } public static void main(String [] args) { testGeneric d = new testGeneric(); d.add(); d.forEach(); } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76773.html
摘要:我的是忙碌的一年,從年初備戰(zhàn)實(shí)習(xí)春招,年三十都在死磕源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實(shí)習(xí)。因?yàn)槲倚睦砗芮宄业哪繕?biāo)是阿里。所以在收到阿里之后的那晚,我重新規(guī)劃了接下來(lái)的學(xué)習(xí)計(jì)劃,將我的短期目標(biāo)更新成拿下阿里轉(zhuǎn)正。 我的2017是忙碌的一年,從年初備戰(zhàn)實(shí)習(xí)春招,年三十都在死磕JDK源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實(shí)習(xí)offer。然后五月懷著忐忑的心情開(kāi)始了螞蟻金...
摘要:歡迎進(jìn)入基礎(chǔ)課程博客地址本系列文章將主要針對(duì)一些基礎(chǔ)知識(shí)點(diǎn)進(jìn)行講解,為平時(shí)歸納所總結(jié),不管是剛接觸開(kāi)發(fā)菜鳥(niǎo)還是業(yè)界資深人士,都希望對(duì)廣大同行帶來(lái)一些幫助。語(yǔ)法是,或者更一般的,要求構(gòu)造器方法是沒(méi)有參數(shù)靜態(tài)方法引用。 歡迎進(jìn)入JAVA基礎(chǔ)課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對(duì)JAVA一些基礎(chǔ)知識(shí)點(diǎn)進(jìn)行講解,為平時(shí)歸納所總結(jié),...
摘要:歡迎進(jìn)入基礎(chǔ)課程博客地址本系列文章將主要針對(duì)一些基礎(chǔ)知識(shí)點(diǎn)進(jìn)行講解,為平時(shí)歸納所總結(jié),不管是剛接觸開(kāi)發(fā)菜鳥(niǎo)還是業(yè)界資深人士,都希望對(duì)廣大同行帶來(lái)一些幫助。語(yǔ)法是,或者更一般的,要求構(gòu)造器方法是沒(méi)有參數(shù)靜態(tài)方法引用。 歡迎進(jìn)入JAVA基礎(chǔ)課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對(duì)JAVA一些基礎(chǔ)知識(shí)點(diǎn)進(jìn)行講解,為平時(shí)歸納所總結(jié),...
摘要:感謝你看到這里,迭代器模式上部分到這里就結(jié)束了,本人文筆隨便,若有不足或錯(cuò)誤之處望給予指點(diǎn),度彎腰很快我會(huì)補(bǔ)全這個(gè)內(nèi)容,生命不息,編程不止參考書(shū)籍設(shè)計(jì)模式 有許多種方法可以把對(duì)象堆起來(lái)成為一個(gè)集合 好消息,當(dāng)?shù)氐牟蛷d和煎餅屋合并了,但是兩者實(shí)現(xiàn)的方式卻不同,這就造成了分歧。讓我們一起去看看把。showImg(https://segmentfault.com/img/bVV5sB?w=...
摘要:虛擬機(jī)實(shí)現(xiàn)了語(yǔ)言最重要的特征平臺(tái)無(wú)關(guān)性。基本組成詳細(xì)框架步驟從操作系統(tǒng)的角度看來(lái),虛擬機(jī)人只是一個(gè)普通進(jìn)程。虛擬機(jī)能夠加載我們編寫(xiě)的文件食物。虛擬機(jī)中的執(zhí)行引擎腸胃用來(lái)執(zhí)行文件中的字節(jié)碼指令。虛擬機(jī)在執(zhí)行過(guò)程中,要分配內(nèi)存創(chuàng)建對(duì)象。 歡迎進(jìn)入JAVA基礎(chǔ)課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對(duì)JAVA一些基礎(chǔ)知識(shí)點(diǎn)進(jìn)行講解,...
閱讀 3529·2021-11-17 17:01
閱讀 3936·2021-11-08 13:12
閱讀 2491·2021-10-08 10:04
閱讀 711·2021-09-29 09:35
閱讀 1431·2021-09-26 10:12
閱讀 2068·2021-09-07 09:58
閱讀 1967·2019-08-30 15:55
閱讀 2146·2019-08-30 13:14