【读书笔记】《java从小白到大牛》对象容器——集合

quange 2022-5-6 138 5/6

集合本质是基于某种数据结构数据容器。常见的数据结构:数组(Array)、集(Set)、队列(Queue)、链表(Linkedlist)、树(Tree)、堆(Heap)、栈(Stack)和映射(Map)等结构。

Java中提供了丰富的集合接口和类,它们来自于java.util包。Java主要的集合接口和类,Java集合类型分为:Collection和Map,Collection子接口有:Set、Queue和List等接口。每一种集合接口描述了一种数据结构。

List集合

List集合中的元素是有序的,可以重复出现。

List接口的实现类有:ArrayListLinkedList。ArrayList是基于动态数组数据结构的实现,LinkedList是基于链表数据结构的实现。

ArrayList访问元素速度优于LinkedList,LinkedList占用的内存空间比较大,但LinkedList在批量插入或删除数据时优于ArrayList。不同的结构对应于不同的算法,有的考虑节省占用空间,有的考虑提高运行效率,对于程序员而言,它们就像是“熊掌”和“鱼肉”,不可兼得!提高运行速度往往是以牺牲空间为代价的,而节省占用空间往往是以牺牲运行速度为代价的。

常用方法

List接口继承自Collection接口,List接口中的很多方法都继承自Collection接口的。List接口中常用方法如下

操作元素

  • get(int index):返回List集合中指定位置的元素。
  • set(int index, Object element):用指定元素替换List集合中指定位置的元素。
  • add(Object element):在List集合的尾部添加指定的元素。该方法是从Collection集合继承过来的。add(int index, Object element):在List集合的指定位置插入指定元素。
  • remove(int index):移除List集合中指定位置的元素。
  • remove(Object element):如果List集合中存在指定元素,则从List集合中移除第一次出现的指定元素。该方法是从Collection集合继承过来的。
  • clear():从List集合中移除所有元素。该方法是从Collection集合继承过来的。

判断元素

  • isEmpty():判断List集合中是否有元素,没有返回true,有返回false。该方法是从Collection集合继承过来的。
  • contains(Object element):判断List集合中是否包含指定元素,包含返回true,不包含返回false。该方法是从Collection集合继承过来的。

查询元素

  • indexOf(Object o):从前往后查找List集合元素,返回第一次出现指定元素的索引,如果此列表不包含该元素,则返回-1。
  • lastIndexOf(Object o):从后往前查找List集合元素,返回第一次出现指定元素的索引,如果此列表不包含该元素,则返回-1。

其他

  • iterator():返回迭代器(Iterator)对象,迭代器对象用于遍历集合。该方法是从Collection集合继承过来的。
  • size():返回List集合中的元素数,返回值是int类型。该方法是从Collection集合继承过来的。
  • subList(int fromIndex, int toIndex):返回List集合中指定的 fromIndex(包括)和toIndex(不包括)之间的元素集合,返回值为List集合。

遍历集合

集合最常用的操作之一是遍历,遍历就是将集合中的每一个元素取出来,进行操作或计算。List集合遍历有三种方法:

  • 01. 使用for循环遍历:List集合可以使用for循环进行遍历,for循环中有循环变量,通过循环变量可以访问List集合中的元素。
  • 02. 使用for-each循环遍历:for-each循环是针对遍历各种类型集合而推出的,笔者推荐使用这种遍历方法。
  • 03. 使用迭代器遍历:Java提供了多种迭代器,List集合可以使用Iterator和ListIterator迭代器。

Set集合

Set集合是由一串无序的,不能重复的相同类型元素构成的集合。

List集合强调的是有序,Set集合强调的是不重复。当不考虑顺序,且没有重复元素时,Set集合和List集合可以互相替换的。

Set接口直接实现类主要是HashSetHashSet是基于散列表数据结构的实现。

常用方法

Set接口也继承自Collection接口,Set接口中大部分都是继承自Collection接口,这些方法如下。

操作元素

  • add(Object element):在Set集合的尾部添加指定的元素。该方法是从Collection集合继承过来的。
  • remove(Object element):如果Set集合中存在指定元素,则从Set集合中移除该元素。该方法是从Collection集合继承过来的。
  • clear():从Set集合中移除所有元素。该方法是从Collection集合继承过来的。

判断元素

  • isEmpty():判断Set集合中是否有元素,没有返回true,有返回false。该方法是从Collection集合继承过来的。
  • contains(Object element):判断Set集合中是否包含指定元素,包含返回true,不包含返回false。该方法是从Collection集合继承过来的。

其他

  • iterator():返回迭代器(Iterator)对象,迭代器对象用于遍历集合。该方法是从Collection集合继承过来的。
  • size():返回Set集合中的元素数,返回值是int类型。该方法是从Collection集合继承过来的。

遍历集合

Set集合中的元素由于没有序号,所以不能使用for循环进行遍历,但可以使用for-each循环迭代器进行遍历。事实上这两种遍历方法也是继承自Collection集合,也就是说所有的Collection集合类型都有这两种遍历方式。

Map集合

Map(映射)集合表示一种非常复杂的集合,允许按照某个键来访问元素。Map集合是由两个集合构成的,一个是键(key)集合,一个是值(value)集合。键集合是Set类型,因此不能有重复的元素。而值集合是Collection类型,可以有重复的元素。Map集合中的键和值是成对出现的。

Map集合更适合通过键快速访问值,就像查英文字典一样,键就是要查的英文单词,而值是英文单词的翻译和解释等。有的时候,一个英文单词会对应多个翻译和解释,这是与Map集合特性对应的。

Map接口直接实现类主要是HashMapHashMap是基于散列表数据结构的实现。

常用方法

Map集合中包含两个集合(键和值),所以操作起来比较麻烦,Map接口提供很多方法用来管理和操作集合。主要的方法如下。

操作元素

  • get(Object key):返回指定键所对应的值;如果Map集合中不包含该键值对,则返回null。
  • put(Object key, Object value):指定键值对添加到集合中。
  • remove(Object key):移除键值对。
  • clear():移除Map集合中所有键值对。

断元素

  • isEmpty():判断Map集合中是否有键值对,没有返回true,有返回false。
  • containsKey(Object key):判断键集合中是否包含指定元素,包含返回true,不包含返回false。
  • containsValue(Object value):判断值集合中是否包含指定元素,包含返回true,不包含返回false。

查看集合

  • keySet():返回Map中的所有键集合,返回值是Set类型。
  • values():返回Map中的所有值集合,返回值是Collection类型。size():返回Map集合中键值对数。

Map集合遍历与List和Set集合不同,Map有两个集合,因此遍历时可以只遍历值的集合,也可以只遍历键的集合,也可以同时遍历。这些遍历过程都可以使用for-each循环和迭代器进行遍历。

- THE END -
最后修改:2022年5月6日
0

版权声明:
一、本站致力于为软件爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的所有下载文件均为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、我站提供用户下载的所有内容均转自互联网。如有内容侵犯您的版权或其他利益的,请编辑邮件并加以说明发送到站长邮箱。站长会进行审查之后,情况属实的会在三个工作日内为您删除。

共有 0 条评论