java基础(三)------集合构架
2017-03-04 20:32
148 查看
1.集合构架关系
集合构架:java的集合构架是一些封装好的数据结构,可以用来保存大量的,成组的数据,主要是Java.util.*包下面。
Collection接口是集合的根接口,有三个重要的子接口,Set(规则集),List(线性表),Map(键值对)。
Tables | Are |
---|---|
Set | 存储元素不能重复 |
List | 存储元素可以重复 |
Map | 键不能重复 |
2.迭代器Iterator和比较器接口Comparator
1.Iterator迭代器Iterator是在集合构架中用来遍历集合的工具类,可以从 集合.iterator() 获得。
通过next()获得集合中下一个元素
通过hasNext()检查集合中是否还有元素
通过remove()讲集合中的元素删除
List的实现类还有自己独有的ListIterator,可以实现从两个方向遍历List,也可以从List中插入和删除元素(List也可以使用Iterator)
hasNext():以正向遍历列表时,如果列表迭代器后面还有元素,则返回 true,否则返回false
next():返回列表中ListIterator指向位置后面的元素
hasPrevious():如果以逆向遍历列表,列表迭代器前面还有元素,则返回 true,否则返回false
hasPrevious():如果以逆向遍历列表,列表迭代器前面还有元素,则返回 true,否则返回false
add(E e): 将指定的元素插入列表,插入位置为迭代器当前位置之前
remove():从列表中删除next()或previous()返回的最后一个元素
nextIndex():返回列表中ListIterator所需位置后面元素的索引
previousIndex():返回列表中ListIterator所需位置前面元素的索引
set(E e):从列表中将next()或previous()返回的最后一个元素返回的最后一个元素更改为指定元素e
2.Comparator比较器接口
1.Comparable 接口
Comparable接口是排序接口,实现了该接口的类就意味着“支持排序”,存储对象为该类的List可以通过Collections.sort()排序,该类也可以作为TreeSet和TreeMap的对象存储而不需要再指定比较器。
Compatable接口的定义里只有一个函数,必须实现这个compareTo函数,返回的int值,负数小,0相等,正数大。
package java.lang; import java.util.*; public interface Comparable<T> { public int compareTo(T o); }
2.Comparator 接口
我们若需要控制某个类的次序,可以建立一个“该类的比较器”来进行排序,相当于“外部比较器”,即,没有实现Comparable接口的类需要比较时,传入一个实现Comparator接口的比较器即可。
Comparator 接口必须实现compare函数,equals函数可以不实现。compare函数返回的int值,负数小,0相等,正数大。
package java.util; public interface Comparator<T> { int compare(T o1, T o2); boolean equals(Object obj); }
3.Set
set是存储不重复的无索引的集合,插入快,查询慢,底层用HashMap实现。类 | 有无顺序 |
---|---|
HashSet | 元素没有顺序 |
LinkedHashSet | 按照插入顺序存储 |
TreeSet | 按照元素的自然顺序(需要实现Comparable接口或者添加一个Comparator比较器)存储 |
4.List
类 | 特点 |
---|---|
ArrayList | 数组实现,只在末尾插入和删除效率高 |
LinkedList | 链表实现,在任意地方插入和删除效率高 |
Vector | 线程安全,不涉及线程同步最好不用 |
Stack | 栈,push()入栈,pop()出栈,peek()返回栈顶元素不删除 |
5.Map
Map是键值对,键不能重复,键值可以是任意对象。类 | 有无顺序 |
---|---|
HashMap | 元素没有顺序 |
LinkedHashMap | 按照插入顺序(无参)或者访问顺序(有参)存储 |
TreeSet | 按照键的的自然顺序(需要实现Comparable接口或者添加一个Comparator比较器)存储 |
6.Collections类
Collections是一个工具类,包含了很多静态方法,大部分是用来处理List的。1.排序操作(主要针对List接口相关)
reverse(List list):反转指定List集合中元素的顺序
reverse(List list):反转指定List集合中元素的顺序
shuffle(List list):对List中的元素进行随机排序(洗牌)
sort(List list):对List里的元素根据自然升序排序
sort(List list, Comparator c):自定义比较器进行排序
swap(List list, int i, int j):将指定List集合中i处元素和j出元素进行交换
rotate(List list, int distance):将所有元素向右移位指定长度,如果distance等于size那么结果不变
查找和替换(主要针对Collection接口相关)
binarySearch(List list, Objectkey):使用二分搜索法,以获得指定对象在List中的索引,前提是集合已经排序
max(Collection coll):返回最大元素
max(Collection coll, Comparator comp):根据自定义比较器,返回最大元素
min(Collection coll, Comparator comp):根据自定义比较器,返回最小元素
fill(List list, Object obj):使用指定对象填充
frequency(Collection Objecto):返回指定集合中指定对象出现的次数
其他
disjoint(Collection< ?> c1, Collection< ?> c2) - 如果两个指定 collection 中没有相同的元素,则返回 true。
addAll(Collection< ? super T> c, T… a) - 一种方便的方式,将所有指定元素添加到指定 collection 中。示范: Collections.addAll(flavors, “Peaches ‘n Plutonium”,
“Rocky Racoon”);
相关文章推荐
- Java程序基础测试 基础笔试、面试常见问题集合
- JAVA基础笔试、面试常见问题集合
- Java基础之容器(集合)
- 集合 java基础学习笔记 第四天
- (2011年java基础)集合框架
- Java基础 - 容器和集合
- Java基础15-集合Set
- 一、java包的用法---基础,二、包的用法---进阶,三、JAR命令用法,包是一组类的集合,包其实就是多个文件夹构成的多级目录,包名全部用小写字母表示,在程序中要声明类所属的包时,用package
- java基础知识记录--集合
- JAVA基础之集合
- Java基础:对象的集合(上)
- Java集合List,Set,Map基础
- JAVA -- JAVA基础笔试、面试常见问题集合
- Java语言基础--集合
- java基础面试题集合
- JAVA基础笔试、面试常见问题集合
- [基础回顾-JAVA类集框架篇] 之 集合排序Comparable与Comparator(下)
- [Java框架-grails从基础到实践]7、集合
- java基础学习6--集合
- Java基础14-集合List