浅谈集合Collection和Map

本文探讨了Java集合框架中的Collection和Map的区别。Collection主要用来存储单个元素,包括可重复元素如ArrayList和不可重复元素如HashSet。Map则用于存储键值对,键必须唯一,而值可以重复。不同类型的Map如HashMap、LinkedHashMap和HashTable对于键值是否可为空的规定各有差异,例如HashTable的键值均不能为空,而HashMap和LinkedHashMap允许为空。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、什么是集合collection?

	用我自己的理解来说,集合collection就是一个存放一组的数据或者类的一个容器,在这个容器中可以放相同的数据类型或者类类型,当然也可以放不同的数据类型或者类类型。
	但是一旦在创建collection对象时确定了存放的数据类型就不能再更改,可是如果没有确定就可以存放不同数据类型,同时也会有一些方法使用的限制或者说是使用类的方法在存取是就会报错。
	在java中collection是一个根接口,其实现子类或接口有很多,比如接口有List、Set、Vector;子类有ArrayList、LinkedList(这两个还继承了List接口)、HashSet(还继承了Set接口)。
	必须通过一些具体的实现该接口的子类才能创建其对象使用类中的方法。

在这里插入图片描述

2、什么是Map?

我自己理解就是Map是一个特别的集合,在Map中存放的是一个个关系对或者说是对象,且该对象由键Key和值Value组成。
Key和Value的关系是一对映射;由key--->value的一对多映射关系。其中Key不可以重复,而Value可以重复,且一个Key只能对应一个Value值,一个Value可以由多个不同的Key值指向。
Map元素是无序的,每个元素是由键值对对象组成,该键值对对象在Map中有其中的内部类Entry定义,因此访问Value可以通过Key值直接访问,也可以通过Entry来直接访问Value。
实现Map接口的子类有HashMap、HashTable、LinkedHashMap(该类还继承了HashMap)

在这里插入图片描述

3、集合Collection和Map有哪些区别?

  1. 集合Collection是存储单元素,Map是储存键值对对象
  2. 集合Collection有储存可重复元素集合,比如LinkedList、ArrayList、Vector等,也有储存不可重复元素的集合,比如HashSet、LinkedHashSet等。而在Map中键(Key)是不可能有重复,值(Value)可以重复,换句话说就是一个键只能对应一个值,而相同的多个值可能对应多个键。
  3. Map使用对应的键(Key)查找对应的值,List集合默认是索引和值有对应关系,Set集合则无任何对应关系。
  4. Map中键和值是否可以为空要看实现那个子类,HashMap和LinkedHashMap键和值都能为空,但HashTable的键和值不能为空。
    在HashTable对象中添加null值,不会有编译错误,会有运行错误(空指针异常)
		HashMap<String,Integer> map1=new HashMap<>();
        map1.put(null, null);
        System.out.println(map1);

        LinkedHashMap<String,Integer> map2=new LinkedHashMap<>();
        map2.put(null, null);
        System.out.println(map2);

        Hashtable<String,Integer> map3=new Hashtable<>();
        map3.put(null, null);
        System.out.println(map3);

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值