Java中集合关键字的区别

 

 

 

1、 ArrayList、Vector和Stack有什么区别?

 

 

 

   1、ArrayList的方法和实现基本上和Vector一样,底层都是数组的实现(简:API基本一样) 

   2、Stack继承了Vector,两者的方法都是线程安全,ArrayList没有考虑线程的问题 

   3、vector速度慢,ArrayList做了优化,效率更高

 

2、 ArrayList 和 LinkedList 的区别?

 

 

 

    1、 ArrayList底层是数组的实现,linkedList地层是连接的实现(简:数据结构不同)

           1.1在java中链表就是自己实现一个类,在类中记录了前一个和后一个的地址,每次查找都需要找到前一个或后一个才能往前或者往后找 

     2、ArrayList查找速度快,删除和插入速度慢 (常用)

     3、LinkedList查找速度慢,删除和插入速度快

     4、LinkedList有自己独有的方法:addFirst() addLast() removeLast() removeFirst()。(首尾重要)

3、set和List的区别?

 

 

① set接口下的集合特点:

    1、没有下标 

​    2、无序的 

    3、不能重复(前面的被后面的覆盖)

② List接口下的集合特点:

    1、有下标 

    2、有序的(按照添加的顺序获取)

​    3、可以重复

set转list:

List< 类名 > list = new ArrayList< >( set类 );

 

 

4、collections 和collection的区别?

 

 

collections是java.util下的工具类,其下有 set 及 list;

collection是java.util下的接口;

 

5、HashSet 和TreeSet的区别?

 

 

HashSet不可以排序

TreeSet可以排序(但是他是用自己的一种方排序规则排序),实现自定义类的排序时必须实现Compare接口的compareTo方法

 

1、HashSet(hashset比较是否相等,根据两个对象的哈希值)

1、HashSet不可以排序

  1)、add()--- 添加元素,会先判断是否为同一对象。出于业务上的考虑我们需要重写HasgCoda方法和equals方法,来判断两个对象是业务上的相等;

  2)、remove(Object o)--- 将元素从集合中移除 3)、size()---查看集合长度;

 

HashSet特点:

 1)、遍历时没有顺序;

 2)、允许包含null ;

 3)、类中不允许出现重复元素;

 4)、不能有for循环遍历能用foreach或while循环遍历;

 

2、TreeSet 

1、TreeSet可以排序(但是他是用自己的一种方排序规则排序),实现自定义类的排序时必须实现Compare接口的compareTo方法

   1)、first()----返回第一个元素 

   2)、last()----返回最后一个元素

   3)、pollLast()---删除最后一个元素

   4)、pollFirst()---删除第一个元素

1、使用外部比较器对TreeSet中的元素进行排序,外部比较器作为TreeSet的构造方法参数传递过去。

 2、使用外部比较器,我们自定义的类可以不用实现CompareTo

 

3、Hash的优缺点:

优点:删,增、查很快,提高存储率

缺点:无序,不可重复

 

 

6、Comparable和Comparator的区别?

 

 

  Comparable在java.long包;

  Comparator在java.util包;

 


 

7、集合和数组的区别?

①、数组创建长度固定,集合长度会随集合元素的添加自动扩展。

②、集合中只能存放对象的引用,而数组可以有基本类型,也可以有引用类型。

③、集合中的算法更加丰富,使用集合操作数据会比数组简洁。

posted @ 2019-12-07 19:58  星然  阅读(572)  评论(0编辑  收藏  举报