深入剖析java中的集合框架
解析:如果并不知道程序運(yùn)行時(shí)會(huì)需要多少對(duì)象,或者需要更復(fù)雜方式存儲(chǔ)對(duì)象,那么可以使用Java集合框架。
如果啟用集合的刪除方法,那么集合中所有元素的索引會(huì)自動(dòng)維護(hù)。
集合完全彌補(bǔ)了數(shù)組的缺陷。
02.集合框架的內(nèi)容
集合框架都包含三大塊內(nèi)容:對(duì)外的接口,接口的實(shí)現(xiàn)和對(duì)集合運(yùn)算的算法
01.接口:表示集合的抽象數(shù)據(jù)類型
02.實(shí)現(xiàn):集合框架中接口的具體實(shí)現(xiàn)
03.算法:在一個(gè)實(shí)現(xiàn)了某個(gè)集合框架的接口的對(duì)象身上完成某種有用的計(jì)算方法
java集合框架簡圖:
01.Collection接口存在儲(chǔ)存一組不唯一(允許重復(fù)),無序的對(duì)象
02.Set接口繼承Collection接口,存儲(chǔ)一組唯一(不允許重復(fù)),無序的對(duì)象
03.List接口繼承Collection接口,存儲(chǔ)一組不唯一(允許重復(fù)),有序(以元素插入的次序來放置元素,不會(huì)重新排列)的對(duì)象
04.Map接口存儲(chǔ)一組成對(duì)的鍵-值對(duì)象,提供key(鍵)到value(值)的映射。Map中的key不要求有序,不允許重復(fù)。value同樣不要求有序,但允許重復(fù)。
05.Iterator接口是負(fù)責(zé)定義訪問和遍歷元素的接口。
下面開始介紹:
1.List接口
List接口繼承Collection接口,存儲(chǔ)一組不唯一(允許重復(fù)),有序(以元素插入的次序來放置元素,不會(huì)重新排列)的對(duì)象
實(shí)現(xiàn)List接口的常用類有ArrayList和LinkedList
ArrayList對(duì)數(shù)組進(jìn)行了封裝,實(shí)現(xiàn)了長度可變的數(shù)組
LinkedList采用鏈表存儲(chǔ)方式,其優(yōu)點(diǎn)在于插入,刪除元素時(shí)效率比較高
01.ArrayList集合類
package cn.day001; public class Penguin { private String name="無名氏"; private String sex="Q仔"; public Penguin() { } public Penguin(String name, String sex) { this.name = name; this.sex = sex; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
測(cè)試類:
package cn.day001; import java.util.ArrayList; import java.util.Iterator; import java.util.List; //上機(jī)1 ArrayList集合類 public class Test { public static void main(String[] args) { //1.創(chuàng)建多個(gè)企鵝對(duì)象 Penguin penguin=new Penguin("楠楠","Q仔"); Penguin penguin2=new Penguin("花花","Q妹"); Penguin penguin3=new Penguin("哲哲","Q妹"); //2.創(chuàng)建Arraylist集合對(duì)象并把2個(gè)企鵝對(duì)象放到其中 List<Penguin> penguins=new ArrayList<Penguin>(); penguins.add(penguin); penguins.add(penguin2); penguins.add(penguin3); //3.輸出集合中企鵝的數(shù)量 System.out.println("共計(jì)有"+penguins.size()+"只企鵝"); //4.通過遍歷集合顯示 for (int i = 0; i < penguins.size(); i++) { Penguin pg=(Penguin)penguins.get(i); System.out.println(pg.getName()+"\t"+pg.getSex()); } //5.刪除集合中哲哲企鵝 penguins.remove(penguin3); //6.判斷集合中是否還存在哲哲企鵝 if (penguins.contains(penguin3)) { System.out.println("存在哲哲企鵝"); }else { System.out.println("不存在哲哲企鵝"); } System.out.println(); //7.使用iterator迭代遍歷 System.out.println("使用iterator遍歷"); Iterator<Penguin> its=penguins.iterator(); while (its.hasNext()) { Penguin pg =its.next(); System.out.println("名字"+pg.getName()+"\t性別"+pg.getSex()); } System.out.println(); //8.使用foreach遍歷 System.out.println("使用foreach遍歷"); for (Penguin pg : penguins) { System.out.println("名字"+pg.getName()+"\t性別"+pg.getSex()); } } }
02.LinkedList集合類
package cn.day001; import java.util.LinkedList; //測(cè)試LinkedList的多個(gè)特殊方法 public class Test2 { public static void main(String[] args) { //1.創(chuàng)建多個(gè)企鵝對(duì)象 Penguin penguin=new Penguin("楠楠","Q仔"); Penguin penguin2=new Penguin("花花","Q妹"); Penguin penguin3=new Penguin("哲哲","Q妹"); //2.創(chuàng)建Arraylist集合對(duì)象并把2個(gè)企鵝對(duì)象放到其中 //List<Penguin> penguins=new ArrayList<Penguin>(); LinkedList<Penguin> penguins=new LinkedList<Penguin>(); penguins.add(penguin); penguins.add(penguin2); penguins.add(penguin3); //3.輸出集合中企鵝的數(shù)量 System.out.println("共計(jì)有"+penguins.size()+"只企鵝"); //4.查看集合中第一只企鵝的昵稱 Penguin firstpenguins=penguins.getFirst(); System.out.println("第一只企鵝的昵稱是:"+firstpenguins.getName()); //5.查看集合中最后一只企鵝的昵稱 Penguin lastpenguins=penguins.getLast(); System.out.println("最后一只企鵝的昵稱是:"+lastpenguins.getName()); //6.刪除第一只企鵝和最后一只企鵝 penguins.removeFirst(); penguins.removeLast(); System.out.println("刪除后企鵝數(shù)"+penguins.size()); } }
2.Map接口
01.HashMap集合類
package cn.day002; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Scanner; import java.util.Set; //上機(jī)2 根據(jù)寵物昵稱查找寵物 上機(jī)3 使用iterator迭代遍歷 public class Test { public static void main(String[] args) { Map<String, String> pet=new HashMap<String, String>(); pet.put("嘻嘻", "狗狗"); pet.put("哈哈", "企鵝"); pet.put("呵呵", "貓貓"); Scanner input=new Scanner(System.in); System.out.println("請(qǐng)輸入寵物昵稱:"); String name=input.next(); if (pet.containsKey(name)) { String petname=pet.get(name); System.out.println(name+"對(duì)應(yīng)的寵物"+petname); }else { System.out.println("對(duì)不起,沒有此昵稱對(duì)應(yīng)的寵物"); } System.out.println(); //使用iterator迭代遍歷 System.out.println("使用iterator遍歷"); Set<String> keys=pet.keySet();//取出所有的key的值 Iterator<String> it=keys.iterator();//獲取Iteratoer對(duì)象 while (it.hasNext()) { String key = (String) it.next();//取出key值 String pets=pet.get(key);//根據(jù)key取出對(duì)應(yīng)的值 System.out.println("key值:"+key+"\tvalue值:"+pets); } } }
以上這篇深入剖析java中的集合框架就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java設(shè)計(jì)模式之Iterator模式介紹
所謂Iterator模式,即是Iterator為不同的容器提供一個(gè)統(tǒng)一的訪問方式。本文以java中的容器為例,模擬Iterator的原理。需要的朋友可以參考下2013-07-07詳解SpringBoot2 使用Spring Session集群
這篇文章主要介紹了SpringBoot2 使用Spring Session集群,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-04-04解決java.sql.SQLException:The?server?time?zone?value?&apo
這篇文章主要介紹了解決java.sql.SQLException:The?server?time?zone?value?'?D1ú±ê×?ê±??'?is?unrecognized問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03使用Spring開啟@Async異步方式(javaconfig配置)
這篇文章主要介紹了使用Spring開啟@Async異步方式(javaconfig配置),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08