黑马程序员——集合类(二)

-----------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学习型技术博客、期待与您交流!------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值