【Java學習系列】第3課--Java 進階教程

來源:互聯網
上載者:User

標籤:htable   進階   enumerate   att   動態   get   集合架構   ges   round   

本文地址

可以拜讀: 從零開始學 Java

分享提綱:

  1.java資料結構

 

 

1. java資料結構

 

  1)【概述】

  Java工具包提供了強大的資料結構。在Java中的資料結構主要包括以下幾種介面和類:

  • 枚舉(Enumeration)
  • 位集合(BitSet)
  • 向量(Vector)
  • 棧(Stack)
  • 字典(Dictionary)
  • 雜湊表(Hashtable)
  • 屬性(Properties)

  以上這些類是傳統遺留的,在Java2中引入了一種新的架構-集合架構(Collection),我們後面再討論。

 

  2)枚舉(Enumeration)

    a)【定義】枚舉(Enumeration)介面雖然它本身不屬於資料結構,但它在其他資料結構的範疇裡應用很廣。 枚舉(The Enumeration)介面定義了一種從資料結構中取回連續元素的方式

    b)【代碼舉例】

import java.util.Vector;import java.util.Enumeration;public class EnumerationTester {   public static void main(String args[]) {      Enumeration days;      Vector dayNames = new Vector();      dayNames.add("Sunday");      dayNames.add("Monday");      dayNames.add("Tuesday");      dayNames.add("Wednesday");      dayNames.add("Thursday");      dayNames.add("Friday");      dayNames.add("Saturday");      days = dayNames.elements();      while (days.hasMoreElements()){         System.out.println(days.nextElement());       }   }}
EnumerationTester.java

     運行結果:

SundayMondayTuesdayWednesdayThursdayFridaySaturday
運行結果

 

  3)位集合(BitSet)

    a)【定義】

      位集合類實現了一組可以單獨設定和清除的位或標誌。該類在處理一組布爾值的時候非常有用,你只需要給每個值賦值一"位",然後對位進行適當的設定或清除,就可以對布爾值進行操作了。

    b)【代碼舉例】

import java.util.BitSet;public class BitSetDemo {  public static void main(String args[]) {     BitSet bits1 = new BitSet(16);     BitSet bits2 = new BitSet(16);           // set some bits     for(int i=0; i<16; i++) {        if((i%2) == 0) bits1.set(i);        if((i%5) != 0) bits2.set(i);     }     System.out.println("Initial pattern in bits1: ");     System.out.println(bits1);     System.out.println("\nInitial pattern in bits2: ");     System.out.println(bits2);     // AND bits     bits2.and(bits1);     System.out.println("\nbits2 AND bits1: ");     System.out.println(bits2);     // OR bits     bits2.or(bits1);     System.out.println("\nbits2 OR bits1: ");     System.out.println(bits2);     // XOR bits     bits2.xor(bits1);     System.out.println("\nbits2 XOR bits1: ");     System.out.println(bits2);  }}
BitSetDemo.java

  運行結果:

Initial pattern in bits1:{0, 2, 4, 6, 8, 10, 12, 14}Initial pattern in bits2:{1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14}bits2 AND bits1:{2, 4, 6, 8, 12, 14}bits2 OR bits1:{0, 2, 4, 6, 8, 10, 12, 14}bits2 XOR bits1:{}
運行結果

 

 4)向量(Vector )

  a)【定義】

    向量(Vector)類和傳統數組非常相似,但是Vector的大小能根據需要動態變化。

    和數組一樣,Vector對象的元素也能通過索引訪問。

    使用Vector類最主要的好處就是在建立對象的時候不必給對象指定大小,它的大小會根據需要動態變化。

 

  b)【代碼執行個體】

import java.util.*;public class VectorDemo {   public static void main(String args[]) {      // initial size is 3, increment is 2      Vector v = new Vector(3, 2);      System.out.println("Initial size: " + v.size());      System.out.println("Initial capacity: " +      v.capacity());      v.addElement(new Integer(1));      v.addElement(new Integer(2));      v.addElement(new Integer(3));      v.addElement(new Integer(4));      System.out.println("Capacity after four additions: " +          v.capacity());      v.addElement(new Double(5.45));      System.out.println("Current capacity: " +      v.capacity());      v.addElement(new Double(6.08));      v.addElement(new Integer(7));      System.out.println("Current capacity: " +      v.capacity());      v.addElement(new Float(9.4));      v.addElement(new Integer(10));      System.out.println("Current capacity: " +      v.capacity());      v.addElement(new Integer(11));      v.addElement(new Integer(12));      System.out.println("First element: " +         (Integer)v.firstElement());      System.out.println("Last element: " +         (Integer)v.lastElement());      if(v.contains(new Integer(3)))         System.out.println("Vector contains 3.");      // enumerate the elements in the vector.      Enumeration vEnum = v.elements();      System.out.println("\nElements in vector:");      while(vEnum.hasMoreElements())         System.out.print(vEnum.nextElement() + " ");      System.out.println();   }}
VectorDemo.java

    運行結果:

Initial size: 0Initial capacity: 3Capacity after four additions: 5Current capacity: 5Current capacity: 7Current capacity: 9First element: 1Last element: 12Vector contains 3.Elements in vector:1 2 3 4 5.45 6.08 7 9.4 10 11 12
運行結果

 

 

5)棧(Stack)

  a)【定義】

    棧(Stack)實現了一個後進先出(LIFO)的資料結構。

    你可以把棧理解為對象的垂直分布的棧,當你添加一個新元素時,就將新元素放在其他元素的頂部。

    當你從棧中取元素的時候,就從棧頂取一個元素。換句話說,最後進棧的元素最先被取出。

 

  b)【代碼執行個體】

import java.util.*;public class StackDemo {   static void showpush(Stack st, int a) {      st.push(new Integer(a));      System.out.println("push(" + a + ")");      System.out.println("stack: " + st);   }   static void showpop(Stack st) {      System.out.print("pop -> ");      Integer a = (Integer) st.pop();      System.out.println(a);      System.out.println("stack: " + st);   }   public static void main(String args[]) {      Stack st = new Stack();      System.out.println("stack: " + st);      showpush(st, 42);      showpush(st, 66);      showpush(st, 99);      showpop(st);      showpop(st);      showpop(st);      try {         showpop(st);      } catch (EmptyStackException e) {         System.out.println("empty stack");      }   }}
StackDemo.java

    運行結果:

stack: [ ]push(42)stack: [42]push(66)stack: [42, 66]push(99)stack: [42, 66, 99]pop -> 99stack: [42, 66]pop -> 66stack: [42]pop -> 42stack: [ ]pop -> empty stack
運行結果

 

【Java學習系列】第3課--Java 進階教程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.