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、集合和数组的区别?
①、数组创建长度固定,集合长度会随集合元素的添加自动扩展。
②、集合中只能存放对象的引用,而数组可以有基本类型,也可以有引用类型。
③、集合中的算法更加丰富,使用集合操作数据会比数组简洁。