二十四、JAVA集合框架(四)

键值对Map

    映射是一个存储关键字和值的关联,或者说是“关键字\值”对的对象,即给定一个关键字key,就可以得到它的值value,关键字必须是唯一的,但是可以存在相同的值。

    可以将Map看做是偶对象保存接口,Collection每一次保存一个对象,而Map可以保存一对对象,而这一对对象是按照“key=value”保存的,也就是通过key就可以找到value

map支持的子类


map接口常用方法

我们先通过例子来演示map的使用和其中两个方法entrySet(),keySet()

代码演示:

package demo;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Demo {
	public static void main(String[] args) {
		Map<Integer, String> map = new HashMap<Integer,String>();
		map.put(1, "dodo");
		map.put(2, "haha");
		map.put(3, "lili");
		map.put(4, "lucy");
		
		//获取Map中所有的key组成的集合(key唯一)
		Set<Integer> keys = map.keySet();
		for (Integer key : keys) {
			System.out.println(key+"--->"+map.get(key));
		}
	}
	
}

代码结果:


代码演示:

package demo;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class Demo {
	public static void main(String[] args) {
		Map<Integer, String> map = new HashMap<Integer,String>();
		map.put(1, "dodo");
		map.put(2, "haha");
		map.put(3, "lili");
		map.put(4, "lucy");
		
		
		//获取Map中的所有Entry(key-value)
		Set<Map.Entry<Integer, String>> entrys = map.entrySet();
		for (Entry<Integer, String> entry : entrys) {
			Integer key = entry.getKey();
			String value = entry.getValue();
			System.out.println(key+"---->"+value);
		}
	}
	
}

代码结果:



代码讲解:我们能够看到,通过entrySet(),和keySet()方法,我们都可以很好将map转换成Set集合来进行迭代输出,能够发现在map中所有的key就是一个set集合


================================================

选用哪一种容器取决于每一种容器的存储特点以及当前业务的需求:
List:  单一元素集合.
         允许元素重复/记录元素的添加顺序.

Set:单一元素集合.
        不允许元素重复/不记录元素的添加顺序.

既要不重复,又要保证先后顺序:LinkedHashSet.

Map: 双元素集合. 如果存储数据的时候,还得给数据其为一个的一个名称,此时考虑使用Map.
--------------------------------------------------------------------------------
List和Set以及Map之间相互转换问题:
  List<String> list = new ArrayList<>();
  把List转换为Set:
  Set<String> set = new HashSet<>(list);//此时会消除重复的元素.
  把Set转换为List:
  List<String> list2 = new ArrayList<>(set );
  Map不能直接转换为List或Set(但是Map中的方法可以间接转换).

Map在以后运用的非常广泛:比如可以表示JavaBean对象,可以做缓存(工具箱).
 JavaBean对象:  多对,属性名=属性值(PS:属性名表示字段名)
 Map对象:每一个key-value就好比是一对属性名=属性值.
 把Map对象转换为JavaBean对象,把JavaBean对象转换为Map对象.
---------------------------------------------------------------------------------------------
Set,List,Map三种集合并不是都一直是单独使用的,偶尔也会综合使用。


代码演示:

package chap;

import java.util.*;

public class Example {
	public static void main(String[] args) {
		TreeMap<Integer, String> tm = new TreeMap<Integer,String>();
		tm.put(new Integer(10000-2000), "张三");
		tm.put(new Integer(10000-1500), "李四");
		tm.put(new Integer(10000-3500), "王五");
		tm.put(new Integer(10000-500), "赵六");
		tm.put(new Integer(10000-5000), "陈二");
		Collection<String> collection = tm.values();
		Iterator<String> iterator = collection.iterator();
		
		System.out.println("按工资由低到高顺序输出:");
		while (iterator.hasNext()) {
			String string = (String) iterator.next();
			System.out.println(string+" ");
		}
	}
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值