Set的子接口
SortedSet接口
Set
。这些元素使用其自然顺序进行排序,或者根据通常在创建有序 set 时提供的Comparator
进行排序。该 set 的迭代器将按元素升序遍历 set。提供了一些附加的操作来利用这种排序Comparator<? super E> comparator()
- 返回对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的自然顺序,则返回null。
SortedSet<E> subSet(E fromElement, E toElement)
- 返回此 set 的部分视图,其元素从 fromElement(包括)到 toElement(不包括)。(如果 fromElement 和 toElement 相等,则返回空的 set)。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回的 set 支持此 set 支持的所有可选 set 操作。
SortedSet<E> headSet(E toElement)
- 返回此 set 的部分视图,其元素严格小于 toElement。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回的 set 支持此 set 支持的所有可选 set 操作。
SortedSet<E> tailSet(E fromElement)
- 返回此 set 的部分视图,其元素大于等于 fromElement。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回的 set 支持此 set 支持的所有可选 set 操作。
first()
- 返回此 set 中当前第一个(最低)元素。
last()
- 返回此 set 中当前最后一个(最高)元素。
LinkedHashSet类
实现了Set接口
是HashSet类的子类
可预知迭代顺序的链接哈希Set(与插入元素的顺序相同),迭代时间与Set大小成正比,与容量无关。
具有HashSet的查询速度,且内部使用链表维护元素的顺序。
创建Set时,使用Collections.synchronizedSet()来包装,防止对该Set进行意外的不同步访问。
Set s= Collections.synchronizedSet(new LinkedHashSet(…))
TreeSet类
1.基于TreeMap的NavigableSet(SortedSet的子接口)实现
2.底层是树结构
3.使用元素的自然顺序或根据创建Set时提供的Comparator进行排序
4.不允许放入null值
创建Set时,使用Collections.synchronizedSortedSet()来包装,防止对该Set进行意外的不同步访问。
Set s= Collections.synchronizedSet(new TreeSet(…))
list接口和Comparable接口
List接口
List接口是Collection的子接口,实现List接口的容器类中的元素是有顺序的,而且可重复。
List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。
List的方法有:
int size() 返回列表中的元素数。
boolean isEmpty() 如果列表不包含元素,则返回 true。
boolean contains(Object o) 如果列表包含指定的元素,则返回 true。更确切地讲,当且仅当列表包含满足 (o==null ? e==null : o.equals(e)) 的元素 e 时才返回 true。
iterator() 返回按适当顺序在列表的元素上进行迭代的迭代器。
toArray() 返回按适当顺序包含列表中的所有元素的数组(从第一个元素到最后一个元素)。
add() 向列表的尾部添加指定的元素(可选操作)。
remove() 从此列表中移除第一次出现的指定元素(如果存在)(可选操作)。如果列表不包含元素,则不更改列表。更确切地讲,移除满足(o==null ? get(i)==null : o.equals(get(i))) 的最低索引i 的元素(如果存在这样的元素)。如果此列表已包含指定元素(或者此列表由于调用而发生更改),则返回true。
clear() 从列表中移除所有元素(可选操作)。此调用返回后该列表将是空的。
hashCode() 返回列表的哈希码值。
get(int index) 返回列表中指定位置的元素。
set(int index, E element) 用指定元素替换列表中指定位置的元素(可选操作)。
int indexOf(Object o)
- 返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。更确切地讲,返回满足 (o==null ? get(i)==null : o.equals(get(i))) 的最低索引i;如果没有这样的索引,则返回 -1。
Comparable接口
此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。
comparable接口只有一个方法:
int compareTo(T o)
- 比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
主要的作用就是比较,也可以重写compareTo方法,自己定义。
Collections类
java.util.Collections是一个包装类,提供各种有关集合操作的静态多态方法。
Collections不能够实例化,就像一个工具类,服务于Java集合框架。
主要方法有:
public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)
- 使用二分搜索法搜索指定列表,以获得指定对象。在进行此调用之前,必须根据列表元素的自然顺序对列表进行升序排序(通过
sort(List)
方法)。如果没有对列表进行排序,则结果是不确定的。如果列表包含多个等于指定对象的元素,则无法保证找到的是哪一个。此方法对“随机访问”列表运行 log(n) 次(它提供接近固定时间的位置访问)。如果指定列表没有实现
RandomAccess
接口并且是一个大型列表,则此方法将执行基于迭代器的二分搜索,执行 O(n) 次链接遍历和 O(log n) 次元素比较。
public static void reverse(List<?> list)
- 反转指定列表中元素的顺序。
public static <T> void fill(List<? super T> list, T obj)
- 使用指定元素替换指定列表中的所有元素。
public static <T> void copy(List<? super T> dest, List<? extends T> src)
- 将所有元素从一个列表复制到另一个列表。执行此操作后,目标列表中每个已复制元素的索引将等同于源列表中该元素的索引。目标列表的长度至少必须等于源列表。如果目标列表更长一些,也不会影响目标列表中的其余元素。
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
- 根据元素的自然顺序,返回给定 collection 的最大元素。collection 中的所有元素都必须实现 Comparable 接口。
public static <T> ArrayList<T> list(Enumeration<T> e)
- 返回一个数组列表,它按返回顺序包含指定枚举返回的元素。
public static <T> boolean addAll(Collection<? super T> c, T... elements)
- 将所有指定元素添加到指定 collection 中。可以分别指定要添加的元素,或者将它们指定为一个数组。
例:
class Example { public static void main(String args[]) { List<Integer> link = new ArrayList<Integer>(); link.add(10); link.add(35); link.add(23); link.add(54); link.add(36); Comparator cmp = Collections.reverseOrder(); Collections.sort(link, cmp); Iterator it = link.iterator(); System.out.println("逆序排序的列表为: "); while (it.hasNext()) { System.out.println(it.next()); } System.out.println("给定列表中的最大值为:" + Collections.max(link)); System.out.println("给定列表中的最小值为:" + Collections.min(link)); } }
未完待续....如有你认为有什么错误,还望指点迷津。