不论是基本数据类型,还是引用数据类型的数据,都可以使用集合的形式对它们进行操作。
数组:
数组在java中是一个特殊类,
java中的基本数据类型包括:byte,char,short,int,long,float,double,boolean 8中,其他的都是引用数据类型。
数组创建的时候必须指定一个长度
数组的复制,不能用 = 来直接,因为这样的两个数组指向同一个内存空间,修改一个会对另一个产生影响。可以使用java中的System.arraycopy()来复制,也可以自己用方法遍历。
集合:
集合是用来存储其他对象的对象,大致组成如图所示:
列表(list):有序存放,允许重复,可以存放不同类型的对象 ArrayList,LinkedList
集合(set):无序存放,不允许重复,可存放不同类型的对象, HashSet,LinkedSet
SortedSet:排好序列的Set TreeSet(有序)
映射(Map):俗称键值对,如手机中的电话本 HashMap
SortedMap:排好序列的Map TreeMap(有序)
Array在访问(查看)数据库时效率高,而在插入或者删除的时候效率低。
Linked在访问(查看)数据库时效率低,而在插入或者删除的时候效率高。
ArrayList在整体上效率高与LinkedList,因此大部分情况下都会选择ArrayList,除非很多时候需要进行插入和删除数据。
Vector是线程安全的,当遇到多线程时,也可以使用ArrayList,是用过Java提供的Collections类来转换成线程安全的类。
1.Linked的实现:
底层使用双向链表来存储,
每个节点都包含了对前一个和后一个元素的引用,
2.Hash的实现:
使用数组来存储
依赖hash算法来存储,我们知道每个对象都有它的hash值;
HashSet底层是使用HashMap来存储的,在存储时按key-value来存储,只不过把值存在key中,而value则全部为null;
3.Tree的实现: