Java—集合框架List
- 集合的概念
現(xiàn)實(shí)生活中:很多的事物湊在一起
數(shù)學(xué)中的集合:具有共同屬性的事物的總和
Java中的集合類:是一種工具類,就像是容器,存儲(chǔ)任意數(shù)量的具有共同屬性的對(duì)象
- 集合的作用
- 與數(shù)組相比
- Java集合框架體系結(jié)構(gòu)
Collection和Map接口是兩個(gè)根接口。
Collection有三個(gè)子接口,分別是List(序列)、Queue(隊(duì)列)和Set(集)接口,其中List和Queue存儲(chǔ)的元素是排列有序的、可重復(fù)的,Set中存儲(chǔ)的元素是無序的、不可重復(fù)的。這三個(gè)子接口中List和Set是比較常用的。List 有個(gè)很常用也很重要的實(shí)現(xiàn)類ArrayList(數(shù)組序列),Queue有個(gè)很重要是實(shí)現(xiàn)類LinkedList(鏈表),LinkedList類同時(shí)也是List接口的實(shí)現(xiàn)類,Set也有很重要的實(shí)現(xiàn)類HashSet(哈希集)。
Map接口也有很多子接口,常用的是它的實(shí)現(xiàn)類,其中有個(gè)很重要的實(shí)現(xiàn)類HashMap(哈希表)。
在Collection中存儲(chǔ)的是一個(gè)一個(gè)獨(dú)立的對(duì)象。而Map內(nèi)部,以一個(gè)Key一個(gè)Value兩個(gè)對(duì)象為一個(gè)映射去存儲(chǔ)數(shù)據(jù),這樣的一個(gè)映射便是Entry類的實(shí)例,Entry類(鍵值對(duì))是Map的一個(gè)內(nèi)部類,Key和Value可以是任意類型的對(duì)象。
- Collection接口、子接口以及實(shí)現(xiàn)類
Collection接口是List、Queue和Set接口的父接口;定義了可用于操作List、Set和Queue的增刪改查的操作
List是元素有序并且可以重復(fù)的集合,被稱為序列;可以精確的控制每個(gè)元素的插入位置,或刪除某個(gè)位置元素;ArrayList是數(shù)組序列,底層是由數(shù)組實(shí)現(xiàn)的。
以學(xué)生選課為例,介紹List的使用:
1.1添加
Course.java
package com.test.collection;/*** 課程類* @author Administrator**/ public class Course {public String id;public String name;public Course(String id, String name){this.id = id;this.name = name;} }Student.java
package com.test.collection;import java.util.HashSet; import java.util.Set; /*** 學(xué)生類* @author Administrator**/ public class Student {public String id;public String name;public Set courses;//所選課程public Student(String id, String name) {this.id = id;this.name = name;this.courses = new HashSet();//實(shí)例化sourses(Set是接口,接口不能被直接實(shí)例化) } }ListTest.java
package com.test.collection;import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List;/*** 備選課程類* @author Administrator**/ public class ListTest {/*** 用于存放備選課程的List*/public List coursesToSelect;public ListTest() {this.coursesToSelect = new ArrayList();}/*** 用于向coursesToSelect中添加備選課程*/public void testAdd() {Course c1 = new Course("1", "數(shù)據(jù)結(jié)構(gòu)");//創(chuàng)建課程對(duì)象的實(shí)例coursesToSelect.add(c1);//調(diào)用add方法,添加課程到備選課程List中Course temp = (Course) coursesToSelect.get(0);//對(duì)象存入集合都變成Object,忽略對(duì)象之前的類型,取出時(shí)需類型轉(zhuǎn)換System.out.println("添加了課程:" + temp.id + ":" + temp.name);Course c2 = new Course("2", "C語言");coursesToSelect.add(0, c2);//List中重載的另一個(gè)add()方法,可指定元素所添加的位置Course temp2 = (Course) coursesToSelect.get(0);System.out.println("添加了課程:" + temp2.id + ":" + temp2.name);coursesToSelect.add(c1);//List中元素可以重復(fù)Course temp0 = (Course) coursesToSelect.get(2);System.out.println("添加了課程:" + temp0.id + ":" + temp0.name);//以下方法會(huì)拋出數(shù)組下標(biāo)越界異常//Course c3 = new Course("3", "Java");//coursesToSelect.add(4, c3); Course[] course = {new Course("3", "離散數(shù)學(xué)"), new Course("4", "匯編語言")};coursesToSelect.addAll(Arrays.asList(course));Course temp3 = (Course) coursesToSelect.get(3);Course temp4 = (Course) coursesToSelect.get(4);System.out.println("添加了兩門課程:" + temp3.id + ":" + temp3.name + temp4.id + ":" + temp4.name);Course[] course2 = {new Course("5", "高等數(shù)學(xué)"), new Course("6", "計(jì)算機(jī)網(wǎng)絡(luò)")};coursesToSelect.addAll(2, Arrays.asList(course2));Course temp5 = (Course) coursesToSelect.get(2);Course temp6 = (Course) coursesToSelect.get(3);System.out.println("添加了兩門課程:" + temp5.id + ":" + temp5.name + temp6.id + ":" + temp6.name);}public static void main(String[] args) {ListTest lt = new ListTest();lt.testAdd();} }? 執(zhí)行結(jié)果:
添加了課程:1:數(shù)據(jù)結(jié)構(gòu)
添加了課程:2:C語言
添加了課程:1:數(shù)據(jù)結(jié)構(gòu)
添加了兩門課程:3:離散數(shù)學(xué)4:匯編語言
添加了兩門課程:5:高等數(shù)學(xué)6:計(jì)算機(jī)網(wǎng)絡(luò)
? 1.2查詢
package com.test.collection;import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List;/*** 備選課程類* @author Administrator**/ public class ListTest {/*** 用于存放備選課程的List*/public List coursesToSelect;public ListTest() {this.coursesToSelect = new ArrayList();}/*** 取得List中的元素的方法*/public void testGet() {int size = coursesToSelect.size();System.out.println("有以下課程選擇:");for (int i = 0; i < size; i++) {Course c = (Course) coursesToSelect.get(i);System.out.println("課程:" + c.id + ":" + c.name);}}/*** 通過迭代器訪問集合元素*/public void testIterator() {Iterator it = coursesToSelect.iterator();System.out.println("有以下課程選擇(通過迭代器訪問):");while (it.hasNext()) {Course c = (Course) it.next();System.out.println("課程:" + c.id + ":" + c.name);}}/*** 通過for each方法訪問集合元素*/public void testForEach() {System.out.println("有以下課程選擇(通過for each訪問):");for (Object obj : coursesToSelect) {Course c = (Course) obj;System.out.println("課程:" + c.id + ":" + c.name);}}public static void main(String[] args) {ListTest lt = new ListTest();lt.testGet();lt.testIterator();lt.testForEach();} }執(zhí)行結(jié)果:
有以下課程選擇:
課程:2:C語言
課程:1:數(shù)據(jù)結(jié)構(gòu)
課程:5:高等數(shù)學(xué)
課程:6:計(jì)算機(jī)網(wǎng)絡(luò)
課程:1:數(shù)據(jù)結(jié)構(gòu)
課程:3:離散數(shù)學(xué)
課程:4:匯編語言
? 1.3修改
public class ListTest {public void testModify() {Course c = new Course("7", "毛概");coursesToSelect.set(4, c);} } 修改后,有以下課程可以選擇:
課程:2:C語言
課程:1:數(shù)據(jù)結(jié)構(gòu)
課程:5:高等數(shù)學(xué)
課程:6:網(wǎng)絡(luò)技術(shù)
課程:7:毛概
課程:3:離散數(shù)學(xué)
課程:4:匯編語言
1.4刪除
public class ListTest {public void testDelete() {/*coursesToSelect.remove(4);*//*Course c = (Course) coursesToSelect.get(4);coursesToSelect.remove(c); */Course[] courses = {(Course) coursesToSelect.get(4), (Course) coursesToSelect.get(5)};coursesToSelect.removeAll(Arrays.asList(courses));System.out.println("刪除了課程");} } 刪除后,有以下課程可以選擇:
課程:2:C語言
課程:1:數(shù)據(jù)結(jié)構(gòu)
課程:5:高等數(shù)學(xué)
課程:6:網(wǎng)絡(luò)技術(shù)
課程:4:匯編語言
?
轉(zhuǎn)載于:https://www.cnblogs.com/tianxintian22/p/6653780.html
總結(jié)
以上是生活随笔為你收集整理的Java—集合框架List的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 高阶函数一 概念
- 下一篇: Java笔记第七篇 数据类型初了解(下,