友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
一世书城 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

Java编程思想第4版[中文版](PDF格式)-第83章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




                           implemented by a particular Collection。 If not; that method throws  

                           an U n s u p p o r t e d O p e r a t i o n E x c e p t i o n 。 Exceptions will be covered in  

                           Chapter 9。  



  

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() 返回包含了集合内所有元素的一个数组  

  

*这是一个“可选的”方法,有的集合可能并未实现它。若确实如此,该方法就会遇到一个 

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  



                                                                                               236 


…………………………………………………………Page 238……………………………………………………………

  // 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 parable 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  



                                                                                           237 


…………………………………………………………Page 239……………………………………………………………

    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 ponents 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 等。 

因为不管在什么情况下,新集合内都有自己首选的类。  



8。7。2  使用 Lists  



  



L i s t      Order is the most important feature of a L i s t ; it promises to maintain elements  



                                                                                               238 


…………………………………………………………Page 240……………………………………………………………

(interface)  in a particular sequence。 L i s t adds a number of methods to Collection that allow  

              insertion and removal of elements in the middle of a L i s t 。   (This is remended  

              only for a L i n k e d L i s t 。 ) A List will produce a ListIterator ; and using this you  

              can traverse the L i s t  in both directions; as well as insert and remove elements  

              in the middle of the list (again; remended only for a L i n k e d L i s t )。  



ArrayList* A L i s t  backed by an array。 Use instead of V e c t o r  as a general…purpose object  

              holder。 Allows rapid random access to elements; but is slow when inserting and  

              removing elements from the middle of a list。 ListIterator  should be used only for  

              back…and…forth traversal of an A r r a y L i s t ; but not for inserting and removing  

              elements; which is expensive pared to L i n k e d L i s t 。  



LinkedList Provides optimal sequential access; with inexpensive insertions and deletions from  

              the middle of the list。 Relatively slow for random access。 (Use A r r a y L i s t   

              instead。) Also has a d d F i r s t (  ) ; a d d L a s t (  ) ; g e t F i r s t (   ) ; g e tLast(  );  

              r e m o v e F i r s t (   ) ; and r e m o v e L a s t (   )  (which are not defined in any interfaces or  

              base classes) to allow it to be used as a stack; a queue; and a dequeue。  



  

  

List (接口) 顺序是 List 最重要的特性;它可保证元素按照规定的顺序排列。List 为 Collection 添加了 

大量方法,以便我们在 List 中部插入和删除元素(只推荐对LinkedList 这样做)。List 也会生成一个 

ListIterator (列表反复器),利用它可在一个列表里朝两个方向遍历,同时插入和删除位于列表中部的元 

素(同样地,只建议对 LinkedList 这样做)  

ArrayList * 由一个数组后推得到的
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!