Java学习手记1——集合

一.什么是集合

集合是对象的集合,就像数组是数的集合。集合是一种容器,可以存放对象(可以是不同类型的对象)。

二.集合的优点(为什么要用集合)

当然,在java里,可以使用数组来存放一组类型相同的对象。但是数组存放对象有两个缺点(集合优点):

  1. 数组大小是固定的:数组的一旦创建,大小则是固定的。在要存放的对象个数不可知或者超过数组容量的情况下,不适用。
  2. 数组存放的对象个数不可知:数组的内存放了多少个对象不可以得知。

三.集合的实现

java中集合主要由两个接口实现:CollectionMap,Collection又有两个子接口:SetList

 

Collection接口

            |-------List接口

                       |-------ArrayList类(主要实现类,类似数组),LinkedList类(类似链表),Vector类(线程安全的,不过比较老,不常用)

            |-------Set接口(下面的类实现了Collection接口,基本上没有添加新方法)

                       |-------HashSet(主要实现类,利用该类,需要重写equals()方法hashCode()方法

                       |-------LinkedHashSet(采用链表实现的hashset,遍历的时候按照添加的顺序)

                       |-------TreeSet(只能存放同类型,同时是有序的,此处的有序只按照添加对象的指定顺序。例如String按照字符串从小到大顺序,用的时候需要实现                                             java.lang.Comparable接口中的compareTo(Object o)方法,如果修改类不方便或者希望用一个通用的比较方法去比较多种对象,则可以创建一个实                                     现了Comparator接口的Comparator对象,并重写compare()方法,再在创建TreeSet接口的对象时构造器调用该对象

 

Map接口

            |-------HashMap,LinkedHashMap,TreeMap,Hashtable

 

各个接口的特点:

Set:元素无序,不可重复。SortedSet是一个按照升序排列元素的Set。

List:元素有序,可重复。提供了按照索引访问的方式。可以看作“动态数组”,

Map:具有映射关系“key-value”的键值对。一个键对应一个值,使用时根据键来寻找值,所以键不可重复,值可重复。

 

注:这里对无序、有序的理解:是指元素在内部实现的存储方式不同,有序例如:数组,指针。无序例如:哈希表。

 

下图为Collection接口继承树:

Java学习手记1——集合

下面好像要分别来讲下List,Set,Map接口了,算了,另开一篇再讲吧~

 Java学习手记1——集合

Java学习手记1——集合