快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

Java中的map如何使用

这篇文章给大家介绍Java中的map如何使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

十多年的通河网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整通河建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“通河网站设计”,“通河网站推广”以来,每个客户项目都认真落实执行。

Map与Collection

提到Map集合接口就不能不提到Collection集合接口,map和Collection都是集合接口,Collection中包含了我们经常用的list和set子接口;而Map是与Collection处于平级的地位;Collection中存储的是一组对象,而Map存储的是一个键值对(key/value).

Map

java为数据结构中的映射定义了一个接口java.util.Map
Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。

Map 提供了一个更通用的元素存储方法。Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。从概念上而言,您可以将 List 看作是具有数值键的 Map。而实际上,除了 List 和 Map 都在定义 java.util 中外,两者并没有直接的联系。

在Map对象中,Key是唯一的,不可重复的。null也可以作为key,但这样的key只能有一个;但是可以有一个或多个key所对应的value都是null。

常用API: 

clear()从 Map 中删除所有映射
remove(Object key)从 Map 中删除键和关联的值
put(Object key, Object value)将指定值与指定键相关联
putAll(Map t)将指定 Map 中的所有映射复制到此 map
entrySet()返回 Map 中所包含映射的 Set 视图。Set 中的每个元素都是一个 Map.Entry 对象,可以使用 getKey() 和 getValue() 方法(还有一个 setValue() 方法)访问后者的键元素和值元素
keySet()返回 Map 中所包含键的 Set 视图。如果要删除 Set 中的元素还将会删除 Map 中相应的映射(键和值)
values()返回 map 中所包含值的 Collection 视图。如果要删除 Collection 中的元素还将会删除 Map 中相应的映射(键和值)
get(Object key)返回与指定键关联的值
containsKey(Object key)如果 Map 包含指定键的映射,则返回 true
containsValue(Object value)如果此 Map 将一个或多个键映射到指定值,则返回 true
isEmpty()如果 Map 不包含键-值映射,则返回 true
size()返回 Map 中的键-值映射的数目

当我们想判断map中是否存在某个key时,可以用方法containsKey()来判断,同样想判断是否存在value时用方法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");
		}
	}
}

执行结果是:
Key=Ture value=Ture

Map中提供了一些常用的方法来取出Map中的数据,用的比较多的比如:entrySet()方法,;entrySet()的返回值是个Set集合,此集合的类型为Map.Entry。Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),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> entrySet= map.entrySet();
	System.out.println("entrySet="+entrySet);
	for (Entry key : entrySet) {
		System.out.println("key.getKey="+key.getKey()+" key.getValue()="+ key.getValue());
	}
}

执行的结果如下:

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); 
    } 
  }

执行的结果如下:

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

最后要说的是,map还有一个values()方法,values()方法返回值是Map中value值的集合,通过遍历可以取出value的值,代码如下:

public static void main(String[] args) {
	Map map = new HashMap();
	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);
	}
}

代码执行结果如下:

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

自己做的一个利用map进行hql语句拼接的小例子:

public class HqlMap {
	public static void main(String[] args) {
		Map map = new HashMap();
		map.put("isDelete", 0);
		map.put("roomTypeName", "test");
		Map map1 = new HashMap();
		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 ");
			}
			//去掉最后的一个and 
			int lastIndex = hqlBuilder.lastIndexOf("and");
			if (lastIndex > -1) {
				hql = hqlBuilder.substring(0, lastIndex) 
				            + hqlBuilder.substring(lastIndex + 3, 
				                hqlBuilder.length());
			}
		}
		System.out.println(hql);
	}
}

关于Java中的map如何使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


网页名称:Java中的map如何使用
网址分享:http://6mz.cn/article/pojddp.html

其他资讯