文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java中List  Set和Map之间的区别_动力节点Java学院整理

2023-05-31 15:25

关注

Java集合的主要分为三种类型:

• Set(集)

• List(列表)

• Map(映射)

要深入理解集合首先要了解下我们熟悉的数组:

数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),而JAVA集合可以存储和操作数目不固定的一组数据。 所有的JAVA集合都位于 java.util包中! JAVA集合只能存放引用类型的的数据,不能存放基本数据类型。

世间上本来没有集合,(只有数组参考C语言)但有人想要,所以有了集合 

有人想有可以自动扩展的数组,所以有了List 

有的人想有没有重复的数组,所以有了set 

有人想有自动排序的组数,所以有了TreeSet,TreeList,Tree** 

而几乎有有的集合都是基于数组来实现的. 

因为集合是对数组做的封装,所以,数组永远比任何一个集合要快 

但任何一个集合,比数组提供的功能要多 

 数组声明了它容纳的元素的类型,而集合不声明。这是由于集合以object形式来存储它们的元素。 

 一个数组实例具有固定的大小,不能伸缩。集合则可根据需要动态改变大小。 

 数组是一种可读/可写数据结构---没有办法创建一个只读数组。然而可以使用集合提供的ReadOnly方法,以只读方式来使用集合。该方法将返回一个集合的只读版本。

Java所有“存储及随机访问一连串对象”的做法,array是最有效率的一种。

效率高,但容量固定且无法动态改变。

array还有一个缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量。

Java中有一个Arrays类,专门用来操作array。

     arrays中拥有一组static函数,

   equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。

   fill():将值填入array中。

   sort():用来对array进行排序。

   binarySearch():在排好序的array中寻找元素。

   System.arraycopy():array的复制。

若撰写程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。所以就要用到集合。
那我们开始讨论java中的集合。

集合分类:

Collection:List、Set

Map:HashMap、HashTable

Collection接口

Collection是最基本的集合接口,声明了适用于JAVA集合(只包括Set和List)的通用方法。 Set 和List 都继承了Conllection,Map。

Collection接口的方法:

 boolean add(Object o)      :向集合中加入一个对象的引用     
 void clear():删除集合中所有的对象,即不再持有这些对象的引用     
 boolean isEmpty()    :判断集合是否为空     
 boolean contains(Object o) : 判断集合中是否持有特定对象的引用     
 Iterartor iterator()  :返回一个Iterator对象,可以用来遍历集合中的元素     
 boolean remove(Object o) :从集合中删除一个对象的引用     
 int size()       :返回集合中元素的数目     
 Object[] toArray()    : 返回一个数组,该数组中包括集合中的所有元素

关于:Iterator() 和toArray() 方法都用于集合的所有的元素,前者返回一个Iterator对象,后者返回一个包含集合中所有元素的数组。

Iterator接口声明了如下方法:

 hasNext():判断集合中元素是否遍历完毕,如果没有,就返回true     
 next() :返回下一个元素     
 remove():从集合中删除上一个有next()方法返回的元素。 

Set(集合)

Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。 Set接口主要实现了两个实现类:

• HashSet: HashSet类按照哈希算法来存取集合中的对象,存取速度比较快
• TreeSet :TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。

Set 的用法:存放的是对象的引用,没有重复对象

Set set=new HashSet();   String s1=new String("hello");   String s2=s1;   String s3=new String("world");   set.add(s1);   set.add(s2);   set.add(s3);   System.out.println(set.size());//打印集合中对象的数目 为 2。 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯