首页 > 代码库 > 【Java学习系列】第3课--Java 高级教程

【Java学习系列】第3课--Java 高级教程

本文地址

可以拜读: 从零开始学 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 高级教程