Java--集合

       集合类主要是负责保存、盛装其他数据和引用类型的对象。根接口是collection和map。主要意义是减少编   程工作增加编程速度和质量,减少学习和应用新API的工作,减少设计新API的工作和促进软件的重用。

        集合类主要有三种:list、set和map。

Java--集合_第1张图片

       list里的元素是有序、可重复的。其中list的实现类有:arraylist、linkedlist和vector。

       arraylist的存储结构是数组,默认初始容量是16,扩充大小是原始容量的1.5+1,随机访问比linkedlist效率高。

       linkedlist的存储结构是链表,默认初始容量是10,添加、插入和删除比arraylist效率高,查询时从表头开始。

       vector是向量,是线程安全的。

      Set里的元素是无序、不重复的,set的实现类有:hashset、treeset。hashset是按hash算法来存储元素,因此具有很好的存储哈查询功能。treeset是以二叉树来存储元素的,默认的是升序排序。

      Map的存储结构是键值对(Key-Value)的形式进行存储的,Key值唯一。它的实现类有hashmap、treemap和hashtable。

      Hashmap允许元素可以是null,而Hashtable则不允许。但hashtable是线程安全的。而treemap是按键升序排列的,key就是treeset,value对应每个key。

      Iterator和for each都可以遍历集合。Iterator只能单向遍历,而单独为list创建的linkedIterator可以双向遍历。

      Collections和Arrays都是辅助工具类,arrays包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。Collections、主要提供了在collection上进行操作的静态方法.

      面试中关于集合的问题:

1.collections和collection有什么区别?

2.list和set的区别?

3.arraylist和linkedlist的区别?

4.hashmap和hashtable的区别?

5.排序有哪些方法?

排序:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序)

你可能感兴趣的:(Java--集合)