如何使用凡科建设网站,网站建设投,网页制作书籍推荐,天津公司目录
1.Collection和Collections区别
2.Set和List区别
3.ArrayList和LinkedList和Vector的区别
4.Set如何保证元素不重复
5.Arrays.asList获得的List使用时需要注意什么 1.Collection和Collections区别 Collection 是一个集合接口。 它提供了对集合对象进行基本操作的通用…目录
1.Collection和Collections区别
2.Set和List区别
3.ArrayList和LinkedList和Vector的区别
4.Set如何保证元素不重复
5.Arrays.asList获得的List使用时需要注意什么 1.Collection和Collections区别 Collection 是一个集合接口。 它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。是listset等的父接口。 Collections 是一个包装类。 它包含有各种有关集合操作的静态多态方法。此类不能实例化就像一个工具类服务于Java的Collection框架。 日常开发中不仅要了解Java中的Collection及其子类的用法还要了解Collections用法。可以提升很多处理集合类的效率。
2.Set和List区别
List,Set都是继承自Collection接口。都是用来存储一组相同类型的元素的。
List特点元素有放入顺序元素可重复 。有顺序即先放入的元素排在前面。
Set特点元素无放入顺序元素不可重复。
无顺序即先放入的元素不一定排在前面。 不可重复即相同元素在set中只会保留一份。所以有些场景下set可以用来去重。 不过需要注意的是set在元素插入时是要有一定的方法来判断元素是否重复的。这个方法很重要决定了set中可以保存哪些元素。
3.ArrayList和LinkedList和Vector的区别
List主要有ArrayList、LinkedList与Vector几种实现。
这三者都实现了List 接口使用方式也很相似,主要区别在于因为实现方式的不同,所以对不同的操作具有不同的效率。
ArrayList 是一个可改变大小的数组.当更多的元素加入到ArrayList中时,其大小将会动态地增长.内部的元素可以直接通过get与set方法进行访问,因为ArrayList本质上就是一个数组.
LinkedList 是一个双链表,在添加和删除元素时具有比ArrayList更好的性能.但在get与set方面弱于ArrayList.
当然,这些对比都是指数据量很大或者操作很频繁的情况下的对比,如果数据和运算量很小,那么对比将失去意义.
Vector 和ArrayList类似,但属于强同步类。如果你的程序本身是线程安全的(thread-safe,没有在多个线程之间共享同一个集合/对象),那么使用ArrayList是更好的选择。
Vector和ArrayList在更多元素添加进来时会请求更大的空间。Vector每次请求其大小的双倍空间而ArrayList每次对size增长50%.
而 LinkedList 还实现了 Queue 接口,该接口比List提供了更多的方法,包括 offer(),peek(),poll()等.
注意: 默认情况下ArrayList的初始容量非常小,所以如果可以预估数据量的话,分配一个较大的初始值属于最佳实践,这样可以减少调整大小的开销。
4.Set如何保证元素不重复
在Java的Set体系中根据实现方式不同主要分为两大类。HashSet和TreeSet。 1、TreeSet 是二叉树实现的TreeSet中的数据是自动排好序的不允许放入 null值 2、HashSet 是哈希表实现的HashSet中的数据是无序的可以放入 null值但只能放入一个null两者中的值都不能重复就如数据库中的唯一约束 在HashSet中基本的操作都是由HashMap底层实现的因为HashSet底层是用HashMap存储数据的。当向HashSet中添加元素的时候首先计算元素的hashCode值然后通过扰动计算和按位与的方式计算出这个元素的存储位置如果这个位置为空就将元素添加进去如果不为空则用equals方法比较元素是否相等相等就不添加否则找一个空位添加。
TreeSet的底层是TreeMap的keySet()而TreeMap是基于红黑树实现的红黑树是一种平衡二叉查找树它能保证任何一个节点的左右子树的高度差不会超过较矮的那棵的一倍。
TreeMap是按key排序的元素在插入TreeSet时compareTo()方法要被调用所以TreeSet中的元素要实现Comparable接口。TreeSet作为一种Set它不允许出现重复元素。TreeSet是用compareTo()来判断重复元素的。
5.Arrays.asList获得的List使用时需要注意什么 asList 得到的只是一个 Arrays 的内部类一个原来数组的视图 List因此如果对它进行增删操作会报错 用 ArrayList 的构造器可以将其转变成真正的 ArrayList 人永远不要因为生气而说刻薄的话你的怒气会过去但是你的刻薄话会伤人-一生。所以要么说良善的言语要么保持沉默成年了要学会控制自己的情绪温柔说话。如果吼叫能解决问题驴将统治世界。——稻盛和夫