集合(关于Map)


Map集合是双列集合的顶层接口,下面分为TreeMap和HashMap.

那么我们先来看一下Map和collection的区别:

1.Map是双列的,而collection是单列的

2.Map的键都是唯一的,而collection中只有set集合的值是唯一的

3.Map集合的数据结构值针对键有效,跟值无关;Collection集合的数据结构是针对元素有效

(一)Map集合共性方法的使用.
 1):添加功能
        V put(K key,V value):添加元素。
        如果该键是第一次存储的,就直接存储元素,返回null
        如果该键不是第一次存储,也就是说,前面有相同的键,那么就用该键把以前的键替换掉,返回以前的值(记住是返回以前的键)
 2):删除功能
       void clear():移除所有的键值对元素
       V remove(Object key):根据键删除键值对元素,并把值返回
 3):判断功能
       boolean containsKey(Object key):判断该集合是否包含指定的键
       boolean containsValue(Object value):判断该集合是否包含指定的值
       boolean isEmpty():判断集合是否为空
 4):获取功能
        Set<Map.Entry<K,V>> entrySet():
        V get(Object key):根据键获取值
        Set<K> keySet():获取集合中所有键的集合
         集合.get(Object key):获取集合中所有值的集合
5):长度功能
         int size():返回集合中的键值对的个数

(二)Map集合的遍历

在这里要说明一下,Map集合的遍历和collection的遍历是不一样的,因为Map集合是以键值对的形式存在的,下面来介绍两种遍历Map集合的方法.

 1).根据键获取值   

public static void main(String[] args) {
		TreeMap<String, Integer> tm = new TreeMap<>();
		tm.put("张三", 23);
		tm.put("李四", 24);
		tm.put("王五", 25);
		Set<String> s = tm.keySet();//获取到集合的键
		for(String str : s) {
			Integer value = tm.get(str);通过get(key)获取到值
		}
	}
这种方式没什么难度,就是先定义泛型,然后根据keySet方法获取键,遍历集合,通过get(key)获取到值

2).根据键值对分别获取到键和值

                Set<Map.Entry<String, Integer>> entry = tm.entrySet();
		//开始遍历这个集合获取到键值对
		for(Map.Entry<String, Integer> en : entry) {
			//分别获取到键和值
			String key = en.getKey();
			Integer value = en.getValue();
			//输出
			System.out.println(key + "..." + value);
这种方法其实也并不难,就是多了一个步骤,那就是用entrySet()方法获取到集合的键值对,遍历集合,再分别用getKey(),和getValue()方法获取到键和值.

(三)Map集合的常见两个实现类.
我在这里就只提HashMap和TreeMap这两个集合,TreeList和HashList存储元素或者对象的时候需要注意哪些问题.
1,HashMap集合
HashMap键的位置存储自定义元素,想要保证键唯一,就要依赖元素所属类的hashCode() 和 equals()方法.
2,TreeMap集合
TreeMap集合键存储自定义对象,保证键唯一且实现排序:
自然顺序(存入的对象的类需要实现comparable接口)
比较器顺序(自定义比较器即可)
3,HashMap和Hashtable的区别
HashMap允许使用 null 值和 null 键。线程不同步,效率低。
Hashtable不允许使用 null 值和 null 键。线程同步,效率高。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值