概述
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
集合分类
Collection集合一次的话只能存储一个对象,是单列的集合
collection集合有俩个小弟List和Set集合
List它的特点是可以重复的,有索引的,有序的
ArrayList的底层是以数组实现的,它增删比较慢但是查找较快,线程不安全。
LinkedList的底层是以链表结构实现的,它增删快查找慢,线程不安全的。
Vetor的底层和ArrayList一样都是以数组结构实现的,线程是安全的。
Set的特点是无重复的,无序的,无索引的
HashSet底层数据结构是哈希表。是线程不安全的,但是效率高。依赖于元素的hashcode和equals方法
TreeSet底层数据机构是二叉树。是用来排序的,对象按照指定的顺序排列
LinkedHashSet是HashSet的子类。底层由哈希表和链表实现。有序:指的是取出时的顺序同存入时的顺序相同
HashSet
set集合合是无重复的,引入哈希算法可以提高去重复性的效率,降低equals()的使用次数。
重写hashCode()方法,可以让hashCode()返回一个固定值,进而让HashSet的add方法去使用equals()判断;
如果没有哈希值相同的对象就直接存入集合
如果有哈希值相同的对象,就在让它逐个进行equals()比较。比较的结果实true的时候就舍弃,false存进集合中
如果自己写自定义对象时,需要在自己的类中重写Object类的hashCode()方法和equals()方法
迭代器
List
1.使用for增强循环逐个遍历,使用get()方法
2.使用数组把元素装进数组,再用for循环遍历
3.增强for循环只要Itertor的类都可以使用
4.Vector集合可以使用Enumeration的hasMoreElements()和nextElement()方法
set
1.使用集合类中的itertor()方法调用hashNext方法和next()方法
2.使用增强for循环
TreeSet
TreeSet采用二叉树的数据结构进行排序元素,使用它可以从Set中提取有序(升序或者降序)的序列。需要注意的是,存入自定义类时,TreeSet需要 维护元素的存储顺序,因此自定义类要实现Comparable接口并定义compareTo方法。(不会 添加重复的元素,自然排序,不可以添加null否则回报(Null PointException))
俩种排列方法
排序方式一: 要让自定义对象是实现 Comparable接口,强制让对象具有比较性。,排序时当主要条件相同时,一定要判断下次要条件。然后重写compareTo()方 法。
如果想要按原样顺序输出,则让compareTo()方法返回
排序方式二:当元素自身不具备比较性时,或者具备的比较性不是所需要的,这时就需要让集合自身具备比较性。 在集合初始化的时候,就让集合具有比较性。
定义比较器,将比较器作为参数传递给TreeSet集合的构造函数。
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
最后
以上就是传统橘子为你收集整理的黑马程序员——集合类(二)的全部内容,希望文章能够帮你解决黑马程序员——集合类(二)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复