本站首页    管理页面    写新日志    退出

The Neurotic Fishbowl

[/*Java*/][转]Collection
nybon 发表于 2005/2/5 18:07:05

  Collection (Steven, idealist@gcn.net.tw, 2002/7/6, jdk 1.4)   下圖為Collection物件的繼承圖,Collection的子物件共分三類,List、Set和Vector,List和Set最大的分別在於List可以存放兩個以上同樣的物件; Set則是一種物件只會存放一個,當同一種物件存兩次時,也只會存一個; Vector則可以把它當作動作陣列。底下則分別為LinkedList、ArrayList、HashSet、TreeSet、Vector及Stack的範例程式…。要特別注意,Vector和Stack是Java 1就有的舊類別,其所有method都宣告為synchronized,以避免當一個以上執行緒同時存取時會發生不可預期的結果,其餘類別是Java 1.2才加入的,並沒有宣告為synchronized,所以使用在多緒程式設計時,程式設計師要自己加上臨界區間的處理。    500)this.width=500'> 1.          ArrayList ArrayList是可以在執行時期動態成長的陣列,而且陣列元素不只能夠容納簡單的資料型別,還可以容納物件進去, ArrayList還可以透過toArray轉成一般陣列。   import java.util.*;   public class arraylist {   public static void main(String[] args) {     ArrayList arraylist = new ArrayList();       arraylist.add("Item 0");     arraylist.add("Item 2");     arraylist.add("Item 3");     arraylist.add("Item 4");     arraylist.add("Item 5");     arraylist.add("Item 6");     arraylist.add(1, "Item 1");       System.out.println(arraylist);       arraylist.remove("Item 5");       System.out.println(arraylist);       for(int i=0; i<arraylist.size(); i++) {       System.out.print(arraylist.get(i).toString() + ", ");     }     System.out.println("");       Object[] strItems = arraylist.toArray();     for(int i=0; i<strItems.length; i++) {       System.out.print(strItems[i].toString() + ", ");     }   } }   執行結果: [Item 0, Item 1, Item 2, Item 3, Item 4, Item 5, Item 6] [Item 0, Item 1, Item 2, Item 3, Item 4, Item 6] Item 0, Item 1, Item 2, Item 3, Item 4, Item 6, Item 0, Item 1, Item 2, Item 3, Item 4, Item 6,   2.          LinkedList LinkedList是Java提供的連結串列,它可以透過listIterator取得ListIterator指位器來存取串列中的元素。   import java.util.*;   public class linkedlist {   public static void main(String[] args) {     LinkedList linkedlist1 = new LinkedList();     linkedlist1.add("Item 2");     linkedlist1.add("Item 3");     linkedlist1.add("Item 4");     linkedlist1.add("Item 5");       linkedlist1.add(0, "Item 1");     linkedlist1.addFirst("Item 0");     linkedlist1.addLast("Item 6");       System.out.println(linkedlist1);       linkedlist1.remove(2);     linkedlist1.remove("Item 5");     linkedlist1.removeLast();       System.out.println(linkedlist1);       linkedlist1.set(1, "New Item");       System.out.println(linkedlist1);       for(int i=0; i<linkedlist1.size(); i++) {       System.out.print(linkedlist1.get(i) + ", ");     }     System.out.println("");       ListIterator li = linkedlist1.listIterator();     while (li.hasNext()) {       String strItem = (String) li.next();       System.out.print(strItem + ", ");     }     System.out.println("");       while (!linkedlist1.isEmpty()) {       String strItem = (String) linkedlist1.removeFirst();       System.out.print(strItem + ", ");     }   } }   執行結果: [Item 0, Item 1, Item 2, Item 3, Item 4, Item 5, Item 6] [Item 0, Item 1, Item 3, Item 4] [Item 0, New Item, Item 3, Item 4] Item 0, New Item, Item 3, Item 4, Item 0, New Item, Item 3, Item 4, Item 0, New Item, Item 3, Item 4,   3.          HashSet HashSet是Java提供的雜湊類別,它的特性是不會因元素增加而使得存取時間增長,HashSet也可以透過iterator取得Iterator指位器來存取雜湊表中的元素。   import java.util.*;   public class hashset {   public static void main(String[] args) {     HashSet hashset1 = new HashSet();       for(int i=0; i<10; i++) {       hashset1.add("Item " + i);     }     System.out.println(hashset1);       Iterator ir = hashset1.iterator();     while (ir.hasNext()) {       String strItem = (String) ir.next();       System.out.print(strItem + ", ");     }   } }   執行結果: [Item 9, Item 8, Item 7, Item 6, Item 5, Item 4, Item 3, Item 2, Item 1, Item 0] Item 9, Item 8, Item 7, Item 6, Item 5, Item 4, Item 3, Item 2, Item 1, Item 0,   4.          TreeSet 在TreeSet中加入元素,它會幫我們建成一個平衡的二元樹,所以元素增加很多,搜尋的時間卻只會增加一點點,因為TreeSet的元素可以是任意Object,所以TreeSet可以讓我們透過Comparator介面自行定義TreeSet的排序方式,也可以透過iterator取得Iterator指位器來存取當中的元素。   import java.util.*; import java.text.*;   public class treeset {   public static void main(String[] args) {     Random rd = new Random();     DecimalFormat df = new DecimalFormat("00");       TreeSet treeset1 = new TreeSet();     for(int i=0; i<10; i++) {       treeset1.add("Item " + df.format((Math.abs(rd.nextInt()) % 100)));     }     System.out.println(treeset1);       Iterator ir = treeset1.iterator();     while (ir.hasNext()) {       String strItem = (String) ir.next();       System.out.print(strItem + ", ");     }     System.out.println("");       ir = treeset1.iterator();     ir.next();     SortedSet ss = treeset1.subSet(ir.next(), treeset1.last());     System.out.println(ss);       ss = treeset1.tailSet(treeset1.first());     System.out.println(ss);       ss = treeset1.headSet(treeset1.last());     System.out.println(ss);       TreeSet treeset2 = new TreeSet(new NewComparator());       while (!treeset1.isEmpty()) {       String strItem = (String) treeset1.first();       treeset1.remove(strItem);       treeset2.add(strItem);       //System.out.print(strItem + ", ");     }     treeset2.add("Item X");     System.out.println("");     System.out.println(treeset1);     System.out.println(treeset2);   } }   /* 利用Comparator我們可以自行定義TreeSet的排序方式,只要實作Comparator的介面即可 */ class NewComparator implements Comparator {   public int compare(Object obj1, Object obj2) {     System.out.println((String) obj1 + " : " + (String) obj2);     if (((String) obj1).equals("Item X")) return -1;     return ((String) obj1).compareTo((String) obj2);   } }   執行結果: [Item 15, Item 23, Item 24, Item 31, Item 43, Item 48, Item 57, Item 60, Item 68, Item 69] Item 15, Item 23, Item 24, Item 31, Item 43, Item 48, Item 57, Item 60, Item 68, Item 69, [Item 23, Item 24, Item 31, Item 43, Item 48, Item 57, Item 60, Item 68] [Item 15, Item 23, Item 24, Item 31, Item 43, Item 48, Item 57, Item 60, Item 68, Item 69] [Item 15, Item 23, Item 24, Item 31, Item 43, Item 48, Item 57, Item 60, Item 68] Item 23 : Item 15 Item 24 : Item 15 Item 24 : Item 23 Item 31 : Item 23 Item 31 : Item 24 Item 43 : Item 23 Item 43 : Item 24 Item 43 : Item 31 Item 48 : Item 23 Item 48 : Item 31 Item 48 : Item 43 Item 57 : Item 23 Item 57 : Item 31 Item 57 : Item 43 Item 57 : Item 48 Item 60 : Item 23 Item 60 : Item 31 Item 60 : Item 48 Item 60 : Item 57 Item 68 : Item 31 Item 68 : Item 48 Item 68 : Item 57 Item 68 : Item 60 Item 69 : Item 31 Item 69 : Item 48 Item 69 : Item 60 Item 69 : Item 68 Item X : Item 31 Item X : Item 23 Item X : Item 15   [] [Item X, Item 15, Item 23, Item 24, Item 31, Item 43, Item 48, Item 57, Item 60, Item 68, Item 69]     5.          Vector import java.util.*;   public class vector {   public static void main(String[] args) {     Vector vector1 = new Vector(5);       System.out.println("Capacity: " + vector1.capacity());     System.out.println("Size: " + vector1.size());       vector1.addElement(new Integer(0));     vector1.addElement(new Integer(1));     vector1.addElement(new Float(2));     vector1.addElement(new Integer(3));     vector1.addElement(new Integer(4));     vector1.addElement(new Integer(4));     vector1.addElement(new Double(5));       System.out.println("Capacity: " + vector1.capacity());     System.out.println("Size: " + vector1.size());       if (vector1.contains(new Integer(3))) {       System.out.println("Found a 3");     }     else {       System.out.println("3 not found");     }       vector1.remove(new Integer(3));       if (vector1.contains(new Integer(3))) {       System.out.println("Found a 3");     }     else {       System.out.println("3 not found");     }       vector1.remove(new Integer(4));     if (vector1.contains(new Integer(4))) {       System.out.println("Found a 4");     }     else {       System.out.println("4 not found");     }     System.out.println("Size: " + vector1.size());   } }   執行結果: Capacity: 5 Size: 0 Capacity: 10 Size: 7 Found a 3 3 not found Found a 4 Size: 5 6.          Stack import java.util.*;   public class stack {   public static void main(String[] args) {     Stack stack1 = new Stack();       for(int i=0; i<5; i++) {       stack1.push(new Integer(i));     }       Integer obj = (Integer) stack1.peek();     System.out.println(obj);     System.out.println("=== ");     while (!stack1.isEmpty()) {       System.out.println((Integer) stack1.pop());     }   } }   執行結果: 4 === 4 3 2 1 0  

阅读全文(2163) | 回复(0) | 编辑 | 精华

 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

 
 



The Neurotic Fishbowl

.: 公告

This blog focuses on:

Semantic Web && Java Technology


Bloginess

«December 2025»
123456
78910111213
14151617181920
21222324252627
28293031

.: 我的分类(专题)

首页(171)
/*SemanticWeb*/(34)
/*Java*/(74)
/*FreeComments*/(59)
/*Agent*/(4)


In the Bowl

.: 最新日志

The End
使用Google Trends进行选型
怎样才能称为一次新的版本发行?
如何防止RSS信息过载
使用Excel作为用户接口
如何有效地报告Bug
sourceforge再次被封
趣文两篇
编写Firefox扩展
Jetspeed心得随笔


.: 最新回复

回复:Google API与yahoo 
回复:JADE 3.3的bug
回复:JADE 3.3的bug
回复:JADE 3.3的bug
回复:JADE 3.3的bug
回复:Jbpm和Shark比较的feat
回复:JADE 3.3的bug
回复:JADE 3.3的bug
回复:[转]批判性地看待一种可行的表示技
回复:JIRA破解


The Fishkeeper
blog名称:SW Portal
日志总数:171
评论数量:219
留言数量:8
访问次数:1057945
建立时间:2004年10月30日



Text Me

.: 留言板

签写新留言

路过
路过
页脚问题
RE:请问一下你的主页的下面部分是怎么关
请问一下你的主页的下面部分是怎么关闭的?
我是做Mobile Agent的
Gmail
不错
不错啊小倪同学


Other Fish in the Sea

.: 链接





站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.078 second(s), page refreshed 144803551 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号