最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java集合類知識點總結(jié)

 更新時間:2018年02月28日 15:11:27   作者:彬菌  
本文把Java集合類的相關(guān)知識點做了總結(jié),并把Java常用集合類之間的區(qū)別做了分析,一起參考學(xué)習(xí)下。

集合:只能存儲對象,對象類型可以不一樣,長度可變。

常用的接口和類:

1、List接口(有序、可重復(fù)):ArrayList類、LinkedList、Vector類

2、Set接口(無序、不能重復(fù)):HashSet類、TreeSet類

3、Map接口(鍵值對、鍵唯一、值不唯一):HashMap類、Hashtable類、TreeMap類

集合類的循環(huán)遍歷

1、普通for循環(huán):如 for(int i=0;i<arr.size();i++){…}

2、foreach(增強型for循環(huán)):如 for(Object i:arr){…}

3、Iterator(迭代器):如 Iterator it = arr.iterator();while(it.hasNext()){ Object o =it.next(); …}

注意:無法在遍歷的過程中對數(shù)組或者集合進行修改,而for循環(huán)可以在遍歷的過程中對源數(shù)組或者集合進行修改

ArrayList、LinkedList和Vector的區(qū)別

ArrayList:效率高,多用于查詢

LinkedList:多用于插入和刪除

Vector:線程安全,多用于查詢

代碼:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Vector;

public class ListTest {
	public static void main(String[] args){
		List arrayList=new ArrayList();
		List linkedList=new LinkedList();
		List vector=new Vector();
		
		arrayList.add("1"); //字符類型
		arrayList.add("1"); //重復(fù)元素
		arrayList.add("2");
		arrayList.add(1); //數(shù)字類型
		
		linkedList.add("1");
		linkedList.add("1");
		linkedList.add("2");
		linkedList.add(1);
		
		vector.add("1");
		vector.add("1");
		vector.add("2");
		vector.add(1);
		
		for(Object obj:arrayList){ //foreach循環(huán)
			System.out.println(obj);
		}
		
		for(int i=0;i<linkedList.size();i++){ //普通for循環(huán)
			System.out.println(arrayList.get(i));
		}
		
		Iterator it = vector.iterator(); //迭代器
		while(it.hasNext()){
			Object j=it.next();
			System.out.println(j);
		}
	}
}

HashSet和TreeSet的區(qū)別

HashSet:HashSet 是哈希表實現(xiàn)的,HashSet中的數(shù)據(jù)是無序的,可以放入null,但只能放入一個null

TreeSet:TreeSet是二差樹實現(xiàn)的,Treeset中的數(shù)據(jù)是自動排好序的,不允許放入null值

代碼:

public class SetTest {
	public static void main(String[] args){
		Set hashSet=new HashSet();
		Set treeSet=new TreeSet();
		
		hashSet.add("1"); //字符類型
		hashSet.add("1"); //重復(fù)元素
		hashSet.add("2");
		hashSet.add(1); //數(shù)字類型
		
		treeSet.add("1");
		treeSet.add("1");
		treeSet.add("2");
//		treeSet.add(1); //報錯,treeSet不能添加不同的數(shù)據(jù)類型
		
		for(Object i:hashSet){ //foreach循環(huán)
			System.out.println(i);
		}
		
		Iterator it = treeSet.iterator(); //迭代器
		while(it.hasNext()){
			Object j=it.next();
			System.out.println(j);
		}
	}
}

注意:Set接口沒有g(shù)et方法,所以不能使用普通for循環(huán)來遍歷

HashMap、Hashtable和TreeMap的區(qū)別

HashMap:HashMap允許存在一個為null的key,多個為null的value

Hashtable:hashtable的key和value都不允許為null

TreeMap:能夠把它保存的記錄根據(jù)鍵排序,默認是按鍵值的升序排序,也可以指定排序的比較器,當(dāng)用Iterator 遍歷TreeMap時,得到的記錄是排過序的

代碼:

import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class MapTest {
	public static void main(String[] args){
		Map hashMap=new HashMap();
		Map hashtable=new Hashtable();
		Map treeMap=new TreeMap();
		
		hashMap.put(1, "1"); //字符類型值
		hashMap.put(2, "1"); //同值不同鍵
		hashMap.put(3, "2");
		hashMap.put(4, 1); //數(shù)字類型值
		hashMap.put("5", 1); //字符類型鍵
		
		hashtable.put(1, "1");
		hashtable.put(2, "1");
		hashtable.put(3, "2");
		hashtable.put(4, 1);
		hashtable.put("5", 1);
		
		treeMap.put(1, "1");
		treeMap.put(2, "1");
		treeMap.put(5, "2");
		treeMap.put(4, 1);
//		treeMap.put("5", 1); //報錯,TreeMap不能添加不同類型的鍵
		
		//遍歷hashMap鍵
		for(Object key:hashMap.keySet()){
			System.out.println(key);
		}
		//遍歷hashtable值
		for(Object value:hashtable.values()){
			System.out.println(value);
		}

		//遍歷hashMap鍵值對
		Set set = hashMap.keySet();
		for(Iterator iter = set.iterator(); iter.hasNext();){
			Object key = iter.next();
			Object value = hashMap.get(key);
			System.out.println(key+"\t"+value);
		}
		
		//迭代遍歷hashtable鍵值對,倒序!
		Iterator table = hashtable.entrySet().iterator();
		while(table.hasNext()){
			Map.Entry entry = (Map.Entry) table.next(); 
			Object key = entry.getKey(); //取鍵
			Object value = entry.getValue(); //取值
			System.out.println(key+"\t"+value); 
		}
		
		//迭代遍歷treeMap鍵值對
		Iterator tmp = treeMap.entrySet().iterator();
		while(tmp.hasNext()){
			Map.Entry entry = (Map.Entry) tmp.next(); 
			Object key = entry.getKey(); //取鍵
			Object value = entry.getValue(); //取值
			System.out.println(key+"\t"+value); 
			
		}
	}
}

關(guān)于線程安全的類有:Vecto、HashTabl、StringBuffe

非線程安全:ArrayList 、LinkedList、HashMap、HashSet、TreeMap、TreeSet、StringBulider

注意:ConcurrentHashMap可代替HashMap用于線程安全,且效率比Hashtable高

java自身的機制并不能完全保證線程安全。需要自己手動編碼控制。

相關(guān)文章

  • IDEA中的Run/Debug Configurations各項解讀

    IDEA中的Run/Debug Configurations各項解讀

    這篇文章主要介紹了IDEA中的Run/Debug Configurations各項解讀,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • java九種分布式ID解決方案

    java九種分布式ID解決方案

    在日常的業(yè)務(wù)開發(fā)中,通常需要對一些數(shù)據(jù)做唯一標(biāo)識,本文主要介紹了java九種分布式ID解決方案,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Java如何實現(xiàn)密碼加密

    Java如何實現(xiàn)密碼加密

    這篇文章主要介紹了Java如何實現(xiàn)密碼加密,幫助大家更好的理解和學(xué)習(xí)java,感興趣的朋友可以了解下
    2020-08-08
  • Jmeter?BeanShell?內(nèi)置變量vars、props、prev的使用詳解

    Jmeter?BeanShell?內(nèi)置變量vars、props、prev的使用詳解

    這篇文章主要介紹了Jmeter?BeanShell?內(nèi)置變量vars、props、prev的使用?,文中給大家介紹了Jmeter中關(guān)于BeanShell的相關(guān)知識,結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • 詳解5種Java中常見限流算法

    詳解5種Java中常見限流算法

    在高并發(fā)系統(tǒng)中,出于系統(tǒng)保護角度考慮,通常會對流量進行限流;不但在工作中要頻繁使用,而且也是面試中的高頻考點。本文就為大家整理了5種Java中常見限流算法,需要的可以參考一下
    2023-04-04
  • java實現(xiàn)的圖片裁剪功能示例

    java實現(xiàn)的圖片裁剪功能示例

    這篇文章主要介紹了java實現(xiàn)的圖片裁剪功能,涉及java針對圖片的讀取、轉(zhuǎn)換、保存等相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • 詳解java中產(chǎn)生死鎖的原因及如何避免

    詳解java中產(chǎn)生死鎖的原因及如何避免

    這篇文章主要介紹了java中產(chǎn)生死鎖的原因及如何避免,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Java之TreeSet和TreeMap的兩種排序方式解讀

    Java之TreeSet和TreeMap的兩種排序方式解讀

    這篇文章主要介紹了Java之TreeSet和TreeMap的兩種排序方式解讀,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java中的多種文件上傳方式總結(jié)

    Java中的多種文件上傳方式總結(jié)

    這篇文章主要介紹了Java中的多種文件上傳方式總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java 利用DeferredResult實現(xiàn)http輪詢實時返回數(shù)據(jù)接口

    Java 利用DeferredResult實現(xiàn)http輪詢實時返回數(shù)據(jù)接口

    這篇文章主要介紹了Java 利用 DeferredResult 實現(xiàn) http 輪詢實時返回數(shù)據(jù)接口,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-03-03

最新評論

淮阳县| 汪清县| 荃湾区| 蒙城县| 柞水县| 茂名市| 大厂| 凤台县| 双辽市| 沙洋县| 石河子市| 汉阴县| 兴城市| 天长市| 惠安县| 铁岭县| 绥中县| 河西区| 紫阳县| 澄城县| 伊宁市| 鄂温| 东乡族自治县| 读书| 湖南省| 凌海市| 合山市| 普格县| 双牌县| 喀什市| 平乐县| 大宁县| 焦作市| 大悟县| 乌鲁木齐县| 新邵县| 丹巴县| 斗六市| 衢州市| 抚州市| 堆龙德庆县|