黑马程序员——集合框架
来源:互联网 发布:开淘宝店的流程和步骤 编辑:程序博客网 时间:2024/05/09 14:55
-----------android培训、java培训、java学习型技术博客、期待与您交流! ------------
一、介绍集合框架的结构
1.1 Collection 与 Collections
Collection是集合类的上级接口,继承他的主要有List、Set。
Collections 是是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
2.1 List 与 Set
List:元素是有序的,元素可以重复,因为该集合体系有索引。
Set:元素是无序的,元素可以不重复,该集合没有索引。
List集合有特有的迭代器:ListIterator. 它是Iterator的子接口。
因为Iterator方法是有限的,只能对元素进行判断、取出、删除的操作。如果想要其他的操作如:添加、修改等就需要用其子接口,ListIterator.该接口只能通过List集合的ListIterator来获取。
3.1 ArrayList 、LinkedList 与Vector
首先,ArrayList、LinkedList、Vector都实现了List接口。(List接口继承了Collection接口)
区别:
1.版本:Vector集合是在JDK1.0的时候出现的。 ArrayList、LinkedList集合是在JDK1.2的时候出现的。
2.数据结构:LinkedList底层用的是链表结构。 ArrayList、Vector:底层用的是数组数据结构。
3.线程方面:LinkedList线程不同步。 ArrayList是线程不安全的,它的方法之间是线程不同步的。。 Vector是线程安全的,他的方法之间线程是同步的。
4.存储特点:ArrayList与Vector都有一个初始容量,当存储进它们里面的元素的个数超过了容量时,就需要增加ArrayList与Vector的存储空间。 ArrayList每次增长为原来的0.5倍。Vector每次增长为原来的一倍。
5.操作效率:ArrayList:查询速度快,但是增删稍慢。 LinkedList:增删速度快,查询比较慢。 Vector:增删查都慢。
一般建议不使用Vector.尽量使用ArrayList.如果需要线程同步,就把ArrayList加上一个同步锁即可。
LinkedList特有方法:
在JDK1.6出现了替代方法。
OfferFirst(); OfferLast(); //获取元素,但不删出元素,如果集合中没有元素,会返回NULL
PeekFirst(); PeekLast(); //删除元素,如果集合中没有元素,会返回NULL。
3.2 HashSet、TreeSet
HashSet:底层数据结构是哈希表。
HashSet保证元素的唯一性。 通过元素的两个方法,hashCode和equals方法。
如果元素的HashCode值相同,才会判断equals是否为true.
如果元素的HashCode值不相同,不会调用equals。
TreeSet:底层数据结构是二叉树。
保证元素唯一性的依据是compareTo方法 return 0;
TreeSet排序的第一中方式:让元素自身具有比较性。元素需要实现Comparable接口,覆盖compareTo方法。这种方式称为元素的自然排序,或者叫做默认排序。
TreeSet排序的第二种方式:当元素不具备比较性时,或者具备的比较性不是所需要的,这时就需要让集合自身具备比较性。在集合初始化时就有了比较方式。
当两种排序都存在时,以比较器为主。
4.1 Map
首先,HashTable、HashMap、TreeMap都实现了Map接口
HashTable:底层数据结构是哈希表。不可以存入null值和null键,该集合是线程同步的。
HashMap:底层数据结构是哈希表。允许使用null值和null键,该集合不同步。
TreeMap:底层数据结构是二叉树。线程不同步。可以用于给集合中的键进行排序。
Map集合的两种取出方式:
1.keySet:将Map中所有的键存入到Set集合中。因为Set具备迭代器,可以用迭代方式取出所有的键,在根据get方法,获取每一个键对应的值。
Map集合取值原理:将Map集合转换成Set集合,在通过迭代器取出。
2.Set<Map.Entry<K,V>> entrySet:将Map集合中的映射关系存入到Set集合中,而这个类的数据类型就是:Map.Entry
Map.Entry其实Entry也是一个接口,它是Map接口中的一个内部接口。
5.1 Arrays
Arrays:用于操作数组的工具类,里面都是静态方法。
把数组变成集合有什么好处?
可以用集合的思想和方法来操作数组中的元素。
注意:将数组中的元素变成集合,不可以使集合的增删方法,因为数组的长度是固定的。
如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转换成集合的元素。
如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。
----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------
详情请查看:
- 黑马程序员—集合框架
- 黑马程序员—集合框架
- 黑马程序员—集合框架
- 黑马程序员—集合框架
- 黑马程序员—集合框架
- 黑马程序员——集合框架
- 黑马程序员——集合框架
- 黑马程序员——day14集合框架
- 黑马程序员——集合框架
- 黑马程序员——集合框架
- 黑马程序员——集合框架-Collection
- 黑马程序员——集合框架-List
- 黑马程序员——集合框架
- 黑马程序员——集合框架
- 黑马程序员——集合框架
- 黑马程序员——集合框架(二)
- 黑马程序员——集合框架&List
- 黑马程序员——集合框架&List
- SVN 总结
- Js如何控制GriView中RadioButton的只能选中一项的操作
- Delphi中BHO编程
- 怎么客户端是什么操作系统和浏览器
- Android两种旋转Bitmap方法比较
- 黑马程序员——集合框架
- ActiveX控件
- 后门程序技术知识全面深解
- 显示/隐藏文件名后缀最简单方法(适用Win7及以上版本)
- 面向对象真经-上
- 后门程序技术知识全面深解
- Node.js 究竟是什么?
- cocos2d-x中关于字体的类主要有三种
- 如何利用已有的切片文件生成TPK