map的理解

Map

  • 和collecton的区别
    • map存储元素是成对出现的,键是唯一的,值可重复
    • Collection存储元素是单独的
  • map集合的数据结构只针对键有效,和值无关
  • collection的数据结构针对元素有效

功能

Map集合的功能概述:

1:添加功能

V put(K key,V value):添加元素。这个其实还有另一个功能

如果键是第一次存储,就直接存储元素,返回null

如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值

Map<Integer,String> map=new HashMap<Integer, String>();
System.out.println(map.put(1, "en"));    //  null
System.out.println(map.put(1, "ya"));    //   en
System.out.println(map.get(1));          //   ya
Map<Integer,String> map=new HashMap<Integer, String>();
		map.put(1, "啵啵虎");
		map.put(2, "bian");
		map.put(3, "ba");
		map.put(1, "梦龙");
		System.out.println(map);
		// 输出结果 {1=梦龙, 2=bian, 3=ba}

2:删除功能

void clear():移除所有的键值对元素

V remove(Object key):根据键删除键值对元素,并把值返回

3:判断功能

boolean containsKey(Object key):判断集合是否包含指定的键

	System.out.println(map.containsKey(2));     //true
	System.out.println(map.containsKey(4));     //false

boolean containsValue(Object value):判断集合是否包含指定的值

System.out.println(map.containsValue("啵啵虎"));      //false
System.out.println(map.containsValue("bian"));       //true
System.out.println(map.containsValue("Mark"));       //false

boolean isEmpty():判断集合是否为空

System.out.println(map.isEmpty());           //false

4:获取功能

Set<Map.Entry<K,V>> entrySet():???

       Set<Entry<Integer,String>> set=map.entrySet();
		① System.out.println(set);  
         //[1=梦龙, 2=bian, 3=ba]
	    ② Iterator<Entry<Integer, String>> iterator=set.iterator();
		while(iterator.hasNext()) {
			System.out.println(iterator.next());
		}
		//1=梦龙
          2=bian
          3=ba
  

V get(Object key):根据键获取值

System.out.println(map.get(1));     //梦龙     

Set keySet():获取集合中所有键的集合

Set<Integer> s=map.keySet();
System.out.println(s);           // [1, 2, 3]

Collection values():获取集合中所有值的集合

Collection<String> a= map.values();
System.out.println(a);                //[梦龙, bian, ba]

5:长度功能

int size():返回集合中的键值对的对数

System.out.println(map.size());          //3

hashmap

键是哈希表结构,可以保证键的唯一性

LinekedHashMap

Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。

TreeMap

键是红黑树结构,可以保证键的排序和唯一性

6.遍历map集合

	Map<Integer,String> map=new HashMap<Integer, String>();
		map.put(1, "啵啵虎");
		map.put(2, "bian");
		map.put(3, "ba");
		map.put(1, "梦龙");
		//得到键
		Set<Integer> set =map.keySet();
		//遍历键
		for(Integer key:set) {
		//根据键得到值
		String values =	map.get(key);
			System.out.println(key+values);         //1梦龙
                                                    //2bian
                                                    //3ba
		}
		

Collections

Collections:是针对集合进行操作的工具类,都是静态方法。

面试题

Collection和Collections的区别?

Collection:是单列集合的顶层接口,有子接口List和Set。

Collections:是针对集合操作的工具类,有对集合进行排序和二分查找的方法

要知道的方法

public static void sort(List list):排序 默认情况下是自然顺序。

List<String> list=new ArrayList<>();
		list.add("b");
		list.add("3");
		list.add("6");
		list.add("1");
		list.add("a");
		System.out.println(list);         //[b, 3, 6, 1, a]
		Collections.sort(list);           
		System.out.println(list);         //[1, 3, 6, a, b]

public static int binarySearch(List<?> list,T key):二分查找

public static T max(Collection<?> coll):最大值

public static void reverse(List<?> list):反转

Collections.reverse(list);
System.out.println(list);               //[b, a, 6, 3, 1]

public static void shuffle(List<?> list):随机置换

HashMap和Hashtable的区别

map线程不安全的,效率高

table安全,低

List,Set,Map等接口是否都继承子Map接口

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值