编程之路小细节-数据储存的浅析
Java语言中,数组的容量是初始化后就固定的,除非手动为该数组进行扩容,才会改变该数组的容量大小,并且一个数组中只能存放类型相同的数据(基本类型/引用类型)。而Java集合可以储存和操作数量不固定的一组数据,所有Java集合都位于java.util包中,但是java集合不能储存基本数据类型,只能储存引用类型的数据。
Java集合主要分为三种类型:Set(集合),List(列表),Map(映射)。Collection是最基本的集合接口,声明了适合于Java集合(只包括Set和List)的通用方法。而Set和List都集成了Collection和Map。
Collection接口的方法:
(1)boolean add(Object obj):向集合中加入一个对象的引用
(2)void clear():删除集合中所有的对象,即不再持有这些对象的引用。
(3)boolean isEmpty():判断集合是否为空
(4)boolean contains(Object obj):判断集合中是否持有特定对象的引用。
(5)boolean remove(Object obj):从集合中删除一个对象的引用。
(6)int size():返回集合中元素的数目
(7)Iterator iterator():返回一个Iterator对象,可以用来遍历集合中的元素。
(8)Object[] toArray():返回一个数组,该数组中包括集合中的所有元素。
Set集合:
Set是最简单的一种集合,集合中的对象不按照特定的方式进行排序,并且没有重复对象。
Set接口的两个实现类:
HashSet:HashSet类按照哈希算法来存取集合中的对象,存取速度比较快。
TreeSet:TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。
Set的用法:存放的是对象的引用,没有重复对象。
Set集合的简单代码截图如下:
List列表:
List列表的特征是其元素以线性方式储存,集合众可以储存重复对象。
List接口主要实现类包括:
ArrayList():表示长度可以改变的数组,可以对元素进行随机访问,向ArrayList()中插入与删除元素的速度慢。
LinkedList():采用链表数据结构实现,插入和删除速度快,而数据访问速度慢。
List的get(int index)方法返回集合中由参数index指定的索引位置的对象,下标从''0''开始。
List的简单代码截图如下:
Map映射:
Map是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。Map没有继承于Collection接口,从Map集合中检索元素时,只要给出键对象,就会返回对应的值对象。
Map常用的方法:
(1)Object put(Object key, Object value):向集合中添加元素。
(2)Object remove(Object key):删除与key相关的元素。
(3)void putAll(Map map):将来自特定映像的所有元素添加给该映像。
(4)void clear():从映像中删除所有映射。
(5)Object get(Object key):获取与关键字key相关的值对象。Map集合中的键对象不允许重复,也就是说,任意两个键对象通过equals()方法比较的结果都是false,但是可以将任意多个键同时映射到同一个值对象上。
(6)Conllections:集合实用类,Conllections提供了Java集合实用的静态方法。
Map映射的简单代码截图如下:
总结:
1.List的功能方法:
两种List,一种是基本ArrayList,其优点在于随机访问元素。另一种是LinkedList,其可以快捷的进行元素的插入和删除。保证维护元素的特定次序。
2.Set的功能方法:
Set具有与Collection完全一样的接口,因此没有任何额外的功能。实际上Set就是Collection,只是表现不同的行为(继承和多态的典型应用)。Set保存不重复的元素,即存入Set的每个元素都必须是唯一的,必须定义equals()方法以确保对象的唯一性。不保证维护元素的特定次序。
3.Map的功能方法:
标准的Java类库中包含了几种不同的Map:HashMap,TreeMap,LinkedHashMap,WeakHashMap,IdentityHashMap。它们都有相同的基本接口Map,但是行为、效率、排序策略、保存对象的生命周期和判定 ''键'' 等价的策略等各不相同。所有Java对象都能产生散列码,因为hashCode()方法是定义在基类Object中的方法。由于HashMap使用对象的hashCode()进行查询,所以能够显著提高性能。
每天努力一点,就是最大的进步。