1.java集合框架到底是什么?
Java集合框架,就是对数据结构书中的常见的数据数据结构,进行封装。
2.集合框架的架构是什么?
都是通过一些接口和一些实现接口的类来构造数据结构中常见的数据结构。
自然就拥有了增加,删除,查询,遍历,求其长度,将其置为空的方法。Java中就是add(),remove,get/contain(),iterable(),size(),clear();
集合框架中主要有2大接口,一个接口是Collection,另外一个接口是Map接口。
Collection接口继承了Iterable接口,就自然继承了Iterator方法,该方法主要用来遍历数据。
Collection接口,有3个子接口,List,Set,Queue.
List接口通常就是我们数据结构中认为的线性表。
数据结构中的线性结构有数组,链表,队列,栈,串。
Arraylist:就是数组。
LinkList:就是链表
Vector:就是动态数组,Stack:就是堆栈。
ArrayList和Vector区别:
Vector是线程同步的,ArrayList不是同步的。安全性Vector更高。
如果是在单线程中,使用ArrayList效率更高,vector差一点。
LinkList和ArrayList区别就是数组和链表的区别?两个都可以实现插入,删除和查询,一个查询更高,一个插入,删除更高。
Set:是非常简单的集合,不允许元素重复,对集合中的元素也没有特定的顺序。
HashSet:使用哈希算法存取集合中的元素,存取速度比较快。
Set有一个子接口是SortedSet。该接口提供了排序的功能。实现该SortedSet的类有TreeSet。
Map接口:是一个存储关键字和值的关联或者说是关键字/值对的集合。给定一个关键字,可以得到其相应的值。
HashMap:基于hash表的map,但是该类不保证顺序。
TreeMap:是SortedMap接口的基于红黑树的实现(红黑树是一种特定类型的二叉树,是一种自平衡的二叉树)按照升序排序排列关键字。
另外java.util包中还提供了两个类,供我们使用,丰富我们的使用。
Arrays类:传统静态数组。
Collections类:提供了各种集合的搜索,排序和线程完全化等操作。
Comparable接口,该接口是用来排序的。实现该接口,就可以调用Arrays.sort(引用对象)或者Collections.sort()进行自动排序。
3.hashCode()和equals()?
其实是将数据结构中的hash表原理和数学当中的集合(set)两这个的特点结合起来,一个是地址hashcode地址可能存在相等的情况,一个是set集合中不允许重复对象。
hahCode()和equal一般都是配合使用,主要解决的是在是将自己所创建的对象放入到set集合中,因为set集合是不允许重复的,而遇到重复的对象(地址和内容都相等,hashcode和equal都相等)。在Java中凡是给我提供好的API都是实现了object中的tostring()方法和hashcode()方法和equal方法,至于自己写的类必须自己实现。那么这个set集合对象它到底是如何实现,这个实现方法和哈希表中链地址法很像,不同的关键字,也有可能有着相同的地址,然后解决冲突,这是哈希表的原理。如果hashcode码相等,在比较equal方法,如果equal方法也相等,则视为重复,如果不相等,则视为不重复,如果hashcode不相等,那equal方法比都不会比较的。
详情请参考 http://blog.csdn.net/afgasdg/article/details/6889383
4.Comparable接口是干什么用的?
这个接口中有个很重要的方法就是compareTo()方法,凡是实现了该接口的方法,都是相等则为0,大于则为证书,小于则为负数。自己写的类如果想有比较方法,需自己手动去实现。这种方法都是用作对象和对象之间进行比较的。集合中的Collect.sort(集合对象)排序经常用到的。