日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java的集合:List、Set和Map

發(fā)布時(shí)間:2025/7/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java的集合:List、Set和Map 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

虛線是接口,實(shí)線是實(shí)現(xiàn)類:

集合能夠解決的問題:集合可以麗杰為是一種更高級(jí)的數(shù)組,可以保存多條數(shù)據(jù)

本質(zhì):java官方開發(fā)人員基于java的一些基礎(chǔ)內(nèi)容(數(shù)組等等)創(chuàng)建了一些接口和類,然后使用這些接口和類的對(duì)象來更加靈活的保存或處理多條數(shù)據(jù)。

Object是一個(gè)比較特殊的類型,在Java中有這樣的一條設(shè)定,Object類是任何類的父類;

List:有序集合,類似與數(shù)組,也是給里面的元素進(jìn)行了默認(rèn)的排序,根據(jù)時(shí)間先后順序排序的

用add方法向list里面添加元素,可以添加不同種類的元素

import java.util.ArrayList; import java.util.List;public class App {public static void main(String[] args){/*** 保存幾個(gè)學(xué)習(xí)成績(jī),99,98,88,89*///因?yàn)閘ist是一個(gè)接口,所以右半邊不可以寫new List();必須寫他的實(shí)現(xiàn)類List list = new ArrayList(); //底層是一個(gè)數(shù)組 LinkedList底層是一個(gè)鏈表list.add(99);list.add(89);list.add(88);list.add(98);System.out.println(list);for(int i=0;i<list.size();i++){System.out.println(list.get(i));}} }

List和數(shù)組的區(qū)別:

1.集合中的數(shù)據(jù)類型是沒有必然的要求的

2.這個(gè)list幾個(gè)沒有長(zhǎng)度限制

ArrayList和LinkedList的區(qū)別:

?List的泛形:指定某種類型,list 中只能存放指定的類型,比如下面的一個(gè)例子:存放一個(gè)Video類型的

package jihe;public class Video {private String name;private String type;public Video(String name, String type) {this.name = name;this.type = type;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getType() {return type;}public void setType(String type) {this.type = type;} } package jihe;import java.util.ArrayList; import java.util.List;public class App {public static void main(String[] args){Video video1 = new Video("我不是藥神","劇情");Video video2 = new Video("風(fēng)雨咒","動(dòng)畫");Video video3 = new Video("延禧攻略","電視劇");List<Video> list = new ArrayList<Video>();list.add(video1);list.add(video2);list.add(video3);for(Video video:list){System.out.println("名字是:"+video.getName()+",類型是:"+video.getType());}} }

結(jié)果:

?

Set集合:無序集合,在放入元素時(shí)會(huì)有特點(diǎn)的算法為元素進(jìn)行排序,但是這個(gè)算法我們猜測(cè)不到,跟先后順序也無關(guān)。因此沒有跟List一樣的下標(biāo)去表示里面元素,元素不可重復(fù)

?

package jihe;import java.util.HashSet; import java.util.Set;public class App {public static void main(String[] args){Video video1 = new Video("我不是藥神","劇情");Video video2 = new Video("風(fēng)雨咒","動(dòng)畫");Video video3 = new Video("延禧攻略","電視劇");Set<Video> set = new HashSet<Video>();set.add(video1);set.add(video2);set.add(video3);//循環(huán)只能用增強(qiáng)循環(huán),因?yàn)闊o序,沒有下標(biāo)for(Video video:set){System.out.println("名字是:"+video.getName()+",類型是:"+video.getType());}} }

結(jié)果:和上面的list不一樣是無序的

?

Map集合:功能比較強(qiáng)大,Map是放入鍵(key)值(value)對(duì)的形式放入。

?

package jihe;import java.util.*;public class App {public static void main(String[] args){Video video1 = new Video("我不是藥神","劇情");Video video2 = new Video("風(fēng)雨咒","動(dòng)畫");Video video3 = new Video("延禧攻略","電視劇");Map<String,Video> map = new HashMap<>();map.put("我不是藥神",video1);map.put("風(fēng)雨咒",video2);map.put("延禧攻略",video3);for(String key : map.keySet()){System.out.println("名字是:"+map.get(key).getName()+",類型是:"+map.get(key).getType());}} }

Map的遍歷4種方式:

package jihe;import java.util.HashMap; import java.util.Iterator; import java.util.Map;public class Test {/*** 方式一 這是最常見的并且在大多數(shù)情況下也是最可取的遍歷方式。在鍵值都需要時(shí)使用。*/public void test(){Map<Integer, Integer> map = new HashMap<>();for (Map.Entry<Integer, Integer> entry : map.entrySet()) {System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());}}/*** 方法二 在for-each循環(huán)中遍歷keys或values,* 如果只需要map中的鍵或者值,你可以通過keySet或values來實(shí)現(xiàn)遍歷,而不是用entrySet。* 該方法比entrySet遍歷在性能上稍好(快了10%),而且代碼更加干凈。*/public void test1(){Map<Integer, Integer> map = new HashMap<>();//遍歷map中的鍵for (Integer key : map.keySet()) {System.out.println("Key = " + key);}//遍歷map中的值for (Integer value : map.values()) {System.out.println("Value = " + value);}}/*** 方法三使用Iterator遍歷,使用泛型:*/public void test2(){Map<Integer, Integer> map = new HashMap<>();Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();while (entries.hasNext()) {Map.Entry<Integer, Integer> entry = entries.next();System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());}}/*** 方法三使用Iterator遍歷 ,不使用泛型* 你也可以在keySet和values上應(yīng)用同樣的方法。** 該種方式看起來冗余卻有其優(yōu)點(diǎn)所在。首先,在老版本java中這是惟一遍歷map的方式。另一個(gè)好處是,你可以在遍歷時(shí)調(diào)用iterator.remove()來刪除entries,另兩個(gè)方法則不能。根據(jù)javadoc的說明,如果在for-each遍歷中嘗試使用此方法,結(jié)果是不可預(yù)測(cè)的。** 從性能方面看,該方法類同于for-each遍歷(即方法二)的性能。*/public void test3(){Map map = new HashMap();Iterator entries = map.entrySet().iterator();while (entries.hasNext()) {Map.Entry entry = (Map.Entry) entries.next();Integer key = (Integer)entry.getKey();Integer value = (Integer)entry.getValue();System.out.println("Key = " + key + ", Value = " + value);}}/*** 方法四、通過鍵找值遍歷(效率低)*/public void test4() {Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (Integer key : map.keySet()) {Integer value = map.get(key);System.out.println("Key = " + key + ", Value = " + value);}}}

總結(jié)

如果僅需要鍵(keys)或值(values)使用方法二。如果你使用的語(yǔ)言版本低于java 5,或是打算在遍歷時(shí)刪除entries,必須使用方法三。否則使用方法一(鍵值都要)。

?

轉(zhuǎn)載于:https://www.cnblogs.com/peiminer/p/10033868.html

總結(jié)

以上是生活随笔為你收集整理的java的集合:List、Set和Map的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。