欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java集合類(lèi)知識(shí)點(diǎn)總結(jié)

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

集合:只能存儲(chǔ)對(duì)象,對(duì)象類(lèi)型可以不一樣,長(zhǎng)度可變。

常用的接口和類(lèi):

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

2、Set接口(無(wú)序、不能重復(fù)):HashSet類(lèi)、TreeSet類(lèi)

3、Map接口(鍵值對(duì)、鍵唯一、值不唯一):HashMap類(lèi)、Hashtable類(lèi)、TreeMap類(lèi)

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

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

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

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

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

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"); //字符類(lèi)型
		arrayList.add("1"); //重復(fù)元素
		arrayList.add("2");
		arrayList.add(1); //數(shù)字類(lèi)型
		
		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 是哈希表實(shí)現(xiàn)的,HashSet中的數(shù)據(jù)是無(wú)序的,可以放入null,但只能放入一個(gè)null

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

代碼:

public class SetTest {
	public static void main(String[] args){
		Set hashSet=new HashSet();
		Set treeSet=new TreeSet();
		
		hashSet.add("1"); //字符類(lèi)型
		hashSet.add("1"); //重復(fù)元素
		hashSet.add("2");
		hashSet.add(1); //數(shù)字類(lèi)型
		
		treeSet.add("1");
		treeSet.add("1");
		treeSet.add("2");
//		treeSet.add(1); //報(bào)錯(cuò),treeSet不能添加不同的數(shù)據(jù)類(lèi)型
		
		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接口沒(méi)有g(shù)et方法,所以不能使用普通for循環(huán)來(lái)遍歷

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

HashMap:HashMap允許存在一個(gè)為null的key,多個(gè)為null的value

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

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

代碼:

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"); //字符類(lèi)型值
		hashMap.put(2, "1"); //同值不同鍵
		hashMap.put(3, "2");
		hashMap.put(4, 1); //數(shù)字類(lèi)型值
		hashMap.put("5", 1); //字符類(lèi)型鍵
		
		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); //報(bào)錯(cuò),TreeMap不能添加不同類(lèi)型的鍵
		
		//遍歷hashMap鍵
		for(Object key:hashMap.keySet()){
			System.out.println(key);
		}
		//遍歷hashtable值
		for(Object value:hashtable.values()){
			System.out.println(value);
		}

		//遍歷hashMap鍵值對(duì)
		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鍵值對(duì),倒序!
		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鍵值對(duì)
		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)于線程安全的類(lèi)有:Vecto、HashTabl、StringBuffe

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

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

java自身的機(jī)制并不能完全保證線程安全。需要自己手動(dòng)編碼控制。

相關(guān)文章

  • 開(kāi)放封閉原則_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    開(kāi)放封閉原則_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了開(kāi)放封閉原則,開(kāi)放-封閉原則是面向?qū)ο笤O(shè)計(jì)的核心所在,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Spring?Data?Jpa?復(fù)雜查詢方式總結(jié)(多表關(guān)聯(lián)及自定義分頁(yè))

    Spring?Data?Jpa?復(fù)雜查詢方式總結(jié)(多表關(guān)聯(lián)及自定義分頁(yè))

    這篇文章主要介紹了Spring?Data?Jpa?復(fù)雜查詢方式總結(jié)(多表關(guān)聯(lián)及自定義分頁(yè)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java代碼里如何拼接SQL語(yǔ)句到mybatis的xml

    Java代碼里如何拼接SQL語(yǔ)句到mybatis的xml

    這篇文章主要介紹了Java代碼里拼接SQL語(yǔ)句到mybatis的xml操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java8新特性之Optional的深入解析

    java8新特性之Optional的深入解析

    這篇文章主要給大家介紹了關(guān)于java8新特性之Optional的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • SpringMVC找不到Controller路徑的解決方案

    SpringMVC找不到Controller路徑的解決方案

    這篇文章主要介紹了SpringMVC找不到Controller路徑的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 帶你走進(jìn)Maven的大門(mén)-最全Maven配置及集成idea工具總結(jié)

    帶你走進(jìn)Maven的大門(mén)-最全Maven配置及集成idea工具總結(jié)

    Maven項(xiàng)目對(duì)象模型(POM),是一個(gè)項(xiàng)目管理工具可以通過(guò)一小段描述信息來(lái)管理項(xiàng)目的構(gòu)建,報(bào)告和文檔的軟件.那我們想要在IDEA中使用Maven得進(jìn)行一些配置,接下來(lái)我們具體看一下是如何配置使用的,需要的朋友可以參考下
    2021-06-06
  • JAVA用for循環(huán)打印空心菱形

    JAVA用for循環(huán)打印空心菱形

    大家好,本篇文章主要講的是JAVA用for循環(huán)打印空心菱形,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • MyBatis解決Update動(dòng)態(tài)SQL逗號(hào)的問(wèn)題

    MyBatis解決Update動(dòng)態(tài)SQL逗號(hào)的問(wèn)題

    這篇文章主要介紹了MyBatis解決Update動(dòng)態(tài)SQL逗號(hào)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 深入解析Jdk8中Stream流的使用讓你脫離for循環(huán)

    深入解析Jdk8中Stream流的使用讓你脫離for循環(huán)

    這篇文章主要介紹了Jdk8中Stream流的使用,讓你脫離for循環(huán),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • java中實(shí)現(xiàn)分頁(yè)的幾種常見(jiàn)方式總結(jié)

    java中實(shí)現(xiàn)分頁(yè)的幾種常見(jiàn)方式總結(jié)

    在項(xiàng)目中經(jīng)常會(huì)查詢大量數(shù)據(jù),這就要用到分頁(yè)展示,下面這篇文章主要給大家介紹了關(guān)于java中實(shí)現(xiàn)分頁(yè)的幾種常見(jiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12

最新評(píng)論