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

Java map的學(xué)習(xí)及代碼示例

 更新時(shí)間:2017年11月16日 16:57:31   作者:fightingKing  
這篇文章主要介紹了Java map的學(xué)習(xí)及代碼示例,簡單介紹了map與collection的比較,map的相關(guān)內(nèi)容,分享了map的一些簡介代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。

前言

最近正在做的高校云平臺項(xiàng)目中接觸Map比較多,關(guān)于map的使用不是很熟悉,所以在此將map的幾個(gè)方法再次學(xué)習(xí)下。

Map與Collection

提到Map集合接口就不能不提到Collection集合接口,map和Collection都是集合接口,Collection中包含了我們經(jīng)常用的list和set子接口;而Map是與Collection處于平級的地位;Collection中存儲的是一組對象,而Map存儲的是一個(gè)鍵值對(key/value).

Map

java為數(shù)據(jù)結(jié)構(gòu)中的映射定義了一個(gè)接口java.util.Map
Map主要用于存儲健值對,根據(jù)鍵得到值,因此不允許鍵重復(fù)(重復(fù)了覆蓋了),但允許值重復(fù)。

Map 提供了一個(gè)更通用的元素存儲方法。Map 集合類用于存儲元素對(稱作“鍵”和“值”),其中每個(gè)鍵映射到一個(gè)值。從概念上而言,您可以將 List 看作是具有數(shù)值鍵的 Map。而實(shí)際上,除了 List 和 Map 都在定義 java.util 中外,兩者并沒有直接的聯(lián)系。

在Map對象中,Key是唯一的,不可重復(fù)的。null也可以作為key,但這樣的key只能有一個(gè);但是可以有一個(gè)或多個(gè)key所對應(yīng)的value都是null。

常用API: 

clear() 從 Map 中刪除所有映射
remove(Object key) 從 Map 中刪除鍵和關(guān)聯(lián)的值
put(Object key, Object value) 將指定值與指定鍵相關(guān)聯(lián)
putAll(Map t) 將指定 Map 中的所有映射復(fù)制到此 map
entrySet() 返回 Map 中所包含映射的 Set 視圖。Set 中的每個(gè)元素都是一個(gè) Map.Entry 對象,可以使用 getKey() 和 getValue() 方法(還有一個(gè) setValue() 方法)訪問后者的鍵元素和值元素
keySet() 返回 Map 中所包含鍵的 Set 視圖。如果要?jiǎng)h除 Set 中的元素還將會刪除 Map 中相應(yīng)的映射(鍵和值)
values() 返回 map 中所包含值的 Collection 視圖。如果要?jiǎng)h除 Collection 中的元素還將會刪除 Map 中相應(yīng)的映射(鍵和值)
get(Object key) 返回與指定鍵關(guān)聯(lián)的值
containsKey(Object key) 如果 Map 包含指定鍵的映射,則返回 true
containsValue(Object value) 如果此 Map 將一個(gè)或多個(gè)鍵映射到指定值,則返回 true
isEmpty() 如果 Map 不包含鍵-值映射,則返回 true
size() 返回 Map 中的鍵-值映射的數(shù)目

當(dāng)我們想判斷map中是否存在某個(gè)key時(shí),可以用方法containsKey()來判斷,同樣想判斷是否存在value時(shí)用方法containsValue()來判斷;代碼如下:

public static void main(String[] args) {
	Map< Serializable, Serializable > map = new HashMap< Serializable, Serializable >();
	map.put(null,null);
	map.put("a", "1");
	map.put("b", "2");
	map.put("c", "3");
	if (map.containsKey("a")) {
		System.out.println("Key=Ture");
		if (map.containsValue("1")) {
			System.out.println("value=Ture");
		}
	}
}

執(zhí)行結(jié)果是:
Key=Ture value=Ture

Map中提供了一些常用的方法來取出Map中的數(shù)據(jù),用的比較多的比如:entrySet()方法,;entrySet()的返回值是個(gè)Set集合,此集合的類型為Map.Entry。Map.Entry是Map聲明的一個(gè)內(nèi)部接口,此接口為泛型,定義為Entry<K,V>。它表示Map中的一個(gè)實(shí)體(一個(gè)key-value對)。接口中有g(shù)etKey(),getValue方法,代碼如下:

public static void main(String[] args) {
	Map< Serializable, Serializable > map = new HashMap< Serializable, Serializable >();
	map.put(null,null);
	map.put("a", "1");
	map.put("b", "2");
	map.put("c", "3");
	Set<Entry<Serializable, Serializable>> entrySet= map.entrySet();
	System.out.println("entrySet="+entrySet);
	for (Entry key : entrySet) {
		System.out.println("key.getKey="+key.getKey()+" key.getValue()="+ key.getValue());
	}
}

執(zhí)行的結(jié)果如下:

entrySet=[null=null, a=1, b=2, c=3]
key.getKey=null key.getValue()=null
key.getKey=a key.getValue()=1
key.getKey=b key.getValue()=2
key.getKey=c key.getValue()=3

接下來要說的是keySet方法,keySet()方法返回值是Map中key值的集合,然后可以通過get(key)遍歷來獲取value值,代碼如下:

public static void main(String[] args) { 
    Map< Serializable, Serializable > map = new HashMap< Serializable, Serializable >(); 
    map.put(null,null); 
    map.put("a", "1"); 
    map.put("b", "2"); 
    map.put("c", "3"); 
     
    Set keySet= map.keySet(); 
    System.out.println("keySet="+keySet); 
    for (Iterator iterator = keySet.iterator(); iterator.hasNext();) { 
      Object key = (Object) iterator.next(); 
      Object value = map.get(key); 
      System.out.println("key = "+key+ " value="+value); 
    } 
  } 

執(zhí)行的結(jié)果如下:

keySet=[null, a, b,c]
key = null value=null
key = a value=1
key = b value=2
key = c value=3

最后要說的是,map還有一個(gè)values()方法,values()方法返回值是Map中value值的集合,通過遍歷可以取出value的值,代碼如下:

public static void main(String[] args) {
	Map<Serializable, Serializable> map = new HashMap<Serializable, Serializable>();
	map.put(null, null);
	map.put("a", "1");
	map.put("b", "2");
	map.put("c", "3");
	Collection c = map.values();
	System.out.println("map.values()=" + map.values());
	for (Iterator iterator = c.iterator(); iterator.hasNext();) {
		Object value = (Object) iterator.next();
		System.out.println("value="+value);
	}
}

代碼執(zhí)行結(jié)果如下:

map.values()=[null,1, 2, 3]
value=null
value=1
value=2
value=3

自己做的一個(gè)利用map進(jìn)行hql語句拼接的小例子:

public class HqlMap {
	public static void main(String[] args) {
		Map<Serializable, Serializable> map = new HashMap<Serializable, Serializable>();
		map.put("isDelete", 0);
		map.put("roomTypeName", "test");
		Map<Serializable, Serializable> map1 = new HashMap<Serializable, Serializable>();
		StringBuilder hqlBuilder = new StringBuilder();
		hqlBuilder.append(" from Build ");
		String hql = "" ;
		if (map.isEmpty()) {
			hql=hqlBuilder.toString();
		} else {
			hqlBuilder.append(" where ");
			Set keySet = map.keySet();
			for (Iterator iterator = keySet.iterator(); iterator.hasNext();) {
				Object key = (Object) iterator.next();
				hqlBuilder.append(key + "=:" + key + " and ");
			}
			//去掉最后的一個(gè)and 
			int lastIndex = hqlBuilder.lastIndexOf("and");
			if (lastIndex > -1) {
				hql = hqlBuilder.substring(0, lastIndex) 
				            + hqlBuilder.substring(lastIndex + 3, 
				                hqlBuilder.length());
			}
		}
		System.out.println(hql);
	}
}

總結(jié)

本文主要介紹了Map集合中entrySet()方法與keySet()、value()方法的使用,其中前兩者取出的都是key和value的映射關(guān)系,只有最后的values取出的是集合中所以的值,沒有鍵,也就沒有了對應(yīng)的映射關(guān)系。

以上就是本文關(guān)于Java map的學(xué)習(xí)及代碼示例的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:

Map集合的四種遍歷方式代碼示例

Java map存放數(shù)組并取出值代碼詳解

淺談對象與Map相互轉(zhuǎn)化

如有不足之處,歡迎留言指出。

相關(guān)文章

  • 詳解Spring Cloud Gateway基于服務(wù)發(fā)現(xiàn)的默認(rèn)路由規(guī)則

    詳解Spring Cloud Gateway基于服務(wù)發(fā)現(xiàn)的默認(rèn)路由規(guī)則

    這篇文章主要介紹了詳解Spring Cloud Gateway基于服務(wù)發(fā)現(xiàn)的默認(rèn)路由規(guī)則,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • Java實(shí)現(xiàn)的矩陣乘法示例

    Java實(shí)現(xiàn)的矩陣乘法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的矩陣乘法,簡單描述了矩陣乘法的原理,并結(jié)合實(shí)例形式分析了java實(shí)現(xiàn)矩陣乘法的相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • idea中acitviti使用acitBPM插件出現(xiàn)亂碼問題及解決方法

    idea中acitviti使用acitBPM插件出現(xiàn)亂碼問題及解決方法

    這篇文章主要介紹了idea中acitviti使用acitBPM插件出現(xiàn)亂碼問題及解決方法,通過將File Encodings內(nèi)容設(shè)置為UTF-8,本文通過圖文展示,需要的朋友可以參考下
    2021-06-06
  • SpringMVC Mybatis配置多個(gè)數(shù)據(jù)源并切換代碼詳解

    SpringMVC Mybatis配置多個(gè)數(shù)據(jù)源并切換代碼詳解

    這篇文章主要介紹了SpringMVC Mybatis配置多個(gè)數(shù)據(jù)源并切換代碼詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 使用CORS實(shí)現(xiàn)JavaWeb跨域請求問題的方法

    使用CORS實(shí)現(xiàn)JavaWeb跨域請求問題的方法

    這篇文章主要介紹了使用Cors實(shí)現(xiàn)JavaWeb跨域請求問題的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • IntelliJ IDEA修改新建文件自動生成注釋的user名

    IntelliJ IDEA修改新建文件自動生成注釋的user名

    今天小編就為大家分享一篇關(guān)于IntelliJ IDEA修改新建文件自動生成注釋的user名,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • 聊聊Redis二進(jìn)制數(shù)組Bitmap

    聊聊Redis二進(jìn)制數(shù)組Bitmap

    這篇文章主要介紹了Redis二進(jìn)制數(shù)組Bitmap,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • idea每次修改代碼都需要重新install的問題

    idea每次修改代碼都需要重新install的問題

    這篇文章主要介紹了idea每次修改代碼都需要重新install的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 簡單了解Mybatis如何實(shí)現(xiàn)SQL防注入

    簡單了解Mybatis如何實(shí)現(xiàn)SQL防注入

    這篇文章主要介紹了簡單了解Mybatis如何實(shí)現(xiàn)SQL防注入,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • java中JDeps命令使用

    java中JDeps命令使用

    jdeps是一個(gè)Java類依賴分析工具,用于分析Java應(yīng)用程序的依賴情況,包括類、包、模塊以及JDK內(nèi)部API的使用,本文就來詳細(xì)的介紹一下,感興趣的可以了解一下
    2024-09-09

最新評論