我是靠谱客的博主 传统橘子,最近开发中收集的这篇文章主要介绍黑马程序员——集合类(二),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

最后

以上就是传统橘子为你收集整理的黑马程序员——集合类(二)的全部内容,希望文章能够帮你解决黑马程序员——集合类(二)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部