更新第二篇 集合框架
来源:互联网 发布:斗地主出牌算法 编辑:程序博客网 时间:2024/06/07 05:41
集合框架
为什么会出现那么多的容器?因为每一个容器对数据的存储方式都有不同。
而这个存储方式称之为:数据结构。而每个容器的数据结构不同,所以取出动作细节也不一样。但是都有共性内容。
collection下面有两个子接口
1---- list: 元素是有序的,元素可以重复。因为该集合体系有索引。 ---Arraylist:底层的数据结构使用的是数组结构。特点:查询速度很快,但是增删稍慢。线程不同步。效率高,代替Vector。Arraylist是初始容量为10的空列表,但是当你超过10元素时,在往里面添加元素时,它就会生成一个新的数组,50%延长,变成15,把原来数组中的元素复制到新数组中来,再把新元素添加到后面去,这就是可变长度数组,而vector一旦超出固定长度,就会100%延长,变为20,相比Arraylist还是较节约空间的。
---LiskedList:底层使用的链表结构。特点:查询速度很慢,但是增删速度很快。
---Vector:底层是数组结构。线程是同步的。枚举是Vector特有的方式。其实枚举和迭代器是一样的,因为枚举的名称以及方法的名称都过长,所以被迭代器取代了。
2---- set : 元素是无序的,元素可以重复。
---HashSet:底层数据结构是哈希表。Hashset是如何保证元素唯一性的呢?是通过元素的两个方法,hashcode和equals来完成的。如果元素的Hashcode值相同,才会判断eqals是否为true。如果元素的hashcode值不同,不会调用equals。
注意:对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。
---Treeset:可以对set集合中的元素进行排序(遵循从小到大的顺序排列)。排序时,当主要条件相同时,一定判断一下次要条件。底层数据是二叉树。保证元素是唯一性的依据是compareto方法return 0
TreeSet排序的第一方式:让元素自身具备比较性。元素需要实现Comparable接口,覆盖CompareTo方法,这种方式也称为元素的自然顺序,或者叫做默认顺序。
TreeSet的第二种排序方式:当元素自身不具备比较时,或者具备的比较性不是所需要的,。这时就让集合自身具备比较性。当两种排序都存在时,以比较器为主。
定义比较器: 定义一个类,实现Comparator接口,覆盖compare方法。comparable里面是comparable方法。
<span style="font-size:18px;">class StrLenComparator implements Comparator{ public int compare(Object o1,Object o2) { String s1 = (String)o1; String s2 = (String)o2; /* if(s1.length()>s2.length()) return 1; if(s1.length()==s2.length()) return 0; */ int num = new Integer(s1.length()).compareTo(new Integer(s2.length())); if(num==0) return s1.compareTo(s2); return num; }</span>}
特有方法,凡是可以操作角标的方法都是该体系特有的方法。
增:
add(index,element)
addAll(index,collection)
删:
remove(index)
改
set(index,element)
查
get(index,element)
sublist(from, to)
listiteratpor();
List集合特有的迭代器。listIterator是Iterator的子接口。
在迭代时,不可以通过集合对象的方法操作集合中的元素。
因为会发生concurrentmodificationException异常。
1.add方法的参数类型是object。以便接收任意类型对象。
2.集合中存储的都是对象的引用(地址)
泛型为我们解决了一些不必要的麻烦。
泛型好处:将运行时期出现问题ClassCastException,转移到了编译时期,方便于程序员解决问题,让运行事情问题减少,安全。避免了强制转换麻烦。那么什么时候写泛型呢?只要见到<>就要定义泛型。其实<>就是用来接收类型的,当使用集合时,将集合中要存储的数据类型作为参数传递<>即可。
- 更新第二篇 集合框架
- 黑马程序员-----集合框架工具类使用(第二篇)
- SVN第二篇-----命令集合
- 集合框架的一些问题(持续更新)
- java集合框架源码学习目录(持续更新中)
- [Java]集合框架知识点总结(逐步更新)
- 第二篇、MVP框架完成
- 深入理解Java集合框架系列-第二章、Java集合中的hashCode方法
- 集合的操作(员工类 第二篇)
- 集合【第二篇 不同集合的讨论和注意要点】
- 集合框架篇2 Collection
- 集合框架篇3 List
- 集合框架篇4 Map
- 集合框架篇5 Set
- 集合框架篇6 总结
- j2se之集合框架篇
- 集合框架
- 集合框架
- jQuery Ajax通用js封装
- 黑马程序员_Java基础_面向对象
- Tcptrack跟踪 TCP连接(centos6.5)
- 设置字符串的属性
- 留个脚印
- 更新第二篇 集合框架
- NSURLConnection常用的代理方法
- Android代码混淆需要知道以及注意的事情
- 经典SQL语句大全
- FreeGLUT Tips: Resolve compile issue: error LNK1104: cannot open file 'freeglutd.lib'
- 值类型和引用类型的区别
- openssl升级到1.0.1g的过程
- html5新标签应用示例一
- AndroidManifest.xml——activity(三)