您的位置:首页 > 编程语言 > Java开发

java基础(三)------集合构架

2017-03-04 20:32 148 查看

1.集合构架关系

集合构架:

java的集合构架是一些封装好的数据结构,可以用来保存大量的,成组的数据,主要是Java.util.*包下面。



Collection接口是集合的根接口,有三个重要的子接口,Set(规则集),List(线性表),Map(键值对)。

TablesAre
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”);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息