java的collections荟萃
下面这张表格(表一)总结了用一个荟萃能做的所有工作(亦可对Set和List做同样的工作,尽量List还提供了一些特另外成果)。Map不是从Collection担任的,所以要单独看待。
boolean add(Object) *担保荟萃内包括了自变量。假如它没有添加自变量,就返回false(假)
boolean addAll(Collection) *添加自变量内的所有元素。假如没有添加元素,则返回true(真)
void clear() *删除荟萃内的所有元素
boolean contains(Object) 若荟萃包括自变量,就返回“真”
boolean containsAll(Collection) 若荟萃包括了自变量内的所有元素,就返回“真”
boolean isEmpty() 若荟萃内没有元素,就返回“真”
Iterator iterator() 返回一个重复器,以用它遍历荟萃的各元素
boolean remove(Object) *如自变量在荟萃里,就删除谁人元素的一个实例。假如已举办了删除,就返回“真”
boolean removeAll(Collection) *删除自变量里的所有元素。假如已举办了任何删除,就返回“真”
boolean retainAll(Collection) *只保存包括在一个自变量里的元素(一个理论的“交集”)。假如已举办了任何改变,就返回“真”
int size() 返回荟萃内的元素数量
Object[] toArray() 返回包括了荟萃内所有元素的一个数组
| 
 Boolean add(Object)  | 
 *Ensures that the Collection contains the argument. Returns false if it doesn’t add the argument.  | 
| 
 Boolean addAll(Collection)  | 
 *Adds all the elements in the argument. Returns true if any elements were added.  | 
| 
 void clear()  | 
 *Removes all the elements in the Collection.   | 
| 
 Boolean contains(Object)  | 
 True if the Collection contains the argument.   | 
| 
 Boolean containsAll(Collection)  | 
 True if the Collection contains all the elements in the argument.   | 
| 
 Boolean isEmpty()  | 
 True if the Collection has no elements.   | 
| 
 Iterator iterator()  | 
 Returns an Iterator that you can use to move through the elements in the Collection.   | 
| 
 Boolean remove(Object)  | 
 *If the argument is in the Collection, one instance of that element is removed. Returns true if a removal occurred.  | 
| 
 Boolean removeAll(Collection)  | 
 *Removes all the elements that are contained in the argument. Returns true if any removals occurred.  | 
| 
 Boolean retainAll(Collection)  | 
 *Retains only elements that are contained in the argument (an “intersection” from set theory). Returns true if any changes occurred.  | 
| 
 int size()  | 
 Returns the number of elements in the Collection.   | 
| 
 Object[] toArray()  | 
 Returns an array containing all the elements in the Collection.  | 
| 
 Object[] toArray(Object[] a)  | 
#p#分页标题#e#
 Returns an array containing all the elements in the Collection, whose type is that of the array a rather than plain Object (you must cast the array to the right type).  | 
| 
 *This is an “optional” method, which means it might not be implemented by a particular Collection. If not, that method throws an UnsupportedOperationException. Exceptions will be covered in Chapter 9.  | 
表一
*这是一个“可选的”要领,有的荟萃大概并未实现它。若确实如此,该要领就会碰着一个UnsupportedOperatiionException,即一个“操纵不支持”违例,详见第9章。
下面这个例子向各人演示了所有要领。同样地,它们只对从荟萃担任的对象有效,一个ArrayList作为一种“不常用的分母”利用:
 
//: Collection1.java
// Things you can do with all Collections
package c08.newcollections;
import java.util.*;
public class Collection1 {
  // Fill with 'size' elements, start
  // counting at 'start':
  public static Collection 
  fill(Collection c, int start, int size) {
    for(int i = start; i < start + size; i++)
      c.add(Integer.toString(i));
    return c;
  }
  // Default to a "start" of 0:
  public static Collection 
  fill(Collection c, int size) {
    return fill(c, 0, size);
  }
  // Default to 10 elements:
  public static Collection fill(Collection c) {
    return fill(c, 0, 10);
  }
  // Create & upcast to Collection:
  public static Collection newCollection() {
    return fill(new ArrayList());
    // ArrayList is used for simplicity, but it's
    // only seen as a generic Collection 
    // everywhere else in the program.
  }
  // Fill a Collection with a range of values:
  public static Collection 
  newCollection(int start, int size) {
    return fill(new ArrayList(), start, size);
  }
  // Moving through a List with an iterator:
  public static void print(Collection c) {
    for(Iterator x = c.iterator(); x.hasNext();)
      System.out.print(x.next() + " ");
    System.out.println();
  }    
  public static void main(String[] args) {
    Collection c = newCollection();
    c.add("ten");
    c.add("eleven");
    print(c);
    // Make an array from the List:
    Object[] array = c.toArray(); 
    // Make a String array from the List:
    String[] str = 
      (String[])c.toArray(new String[1]);
    // Find max and min elements; this means
    // different things depending on the way
    // the Comparable interface is implemented:
    System.out.println("Collections.max(c) = " +
      Collections.max(c));
    System.out.println("Collections.min(c) = " +
      Collections.min(c));
    // Add a Collection to another Collection
    c.addAll(newCollection());
    print(c);
    c.remove("3"); // Removes the first one
    print(c);
    c.remove("3"); // Removes the second one
    print(c);
    // Remove all components that are in the
    // argument collection:
    c.removeAll(newCollection());
    print(c);
    c.addAll(newCollection());
    print(c);
    // Is an element in this Collection
    System.out.println(
      "c.contains(\"4\") = " + c.contains("4"));
    // Is a Collection in this Collection
    System.out.println(
      "c.containsAll(newCollection()) = " + 
      c.containsAll(newCollection()));
    Collection c2 = newCollection(5, 3);
    // Keep all the elements that are in both
    // c and c2 (an intersection of sets):
    c.retainAll(c2);
    print(c);
    // Throw away all the elements in c that
    // also appear in c2:
    c.removeAll(c2);
    System.out.println("c.isEmpty() = " +
      c.isEmpty());
    c = newCollection();
    print(c);
    c.clear(); // Remove all elements
    System.out.println("after c.clear():");
    print(c);
  }
} ///:~
通过第一个要领,我们可用测试数据填充任何荟萃。在当前这种环境下,只是将int转换成String。第二个要领将在本章其余的部门常常回收。
newCollection()的两个版本都建设了ArrayList,用于包括差异的数据集,并将它们作为荟萃工具返回。所以很明明,除了Collection接口之外,不会再用到其他什么。
print()要领也会在本节常常用到。由于它用一个重复器(Iterator)在一个荟萃内遍历,而任何荟萃都可以发生这样的一个重复器,所以它合用于List和Set,也合用于由一个Map生成的Collection。
main()用简朴的手段显示出了荟萃内的所有要领。
在后续的小节里,我们将较量List,Set和Map的差异实现方案,同时指出在各类环境下哪一种方案应成为首选(带有星号的谁人)。各人会发明这里并未包罗一些传统的类,如Vector,Stack以及Hashtable等。因为不管在什么环境下,新荟萃内都有本身首选的类。