• java-数据结构


    枚举

    Enumeration接口中定义了一些方法,通过这些方法可以枚举(一次获得一个)对象集合中的元素。
    这种传统接口已被迭代器取代,虽然Enumeration还未被遗弃,但在现代代码中已经被很少使用了。尽管如此,它还是使用在诸如Vector和Properties这些传统类所定义的方法中,除此之外,还用在一些API类,并且在应用程序中也广泛被使用。

    下面总结了一些Enumeration声明的方法:

    boolean hasMoreElements( )
    测试此枚举是否包含更多的元素。
     
    Object nextElement( )
    如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。

    实例:

          Enumeration days;
          Vector dayNames = new Vector();
          dayNames.add("Sunday");
          dayNames.add("Monday");
          days = dayNames.elements();
          while (days.hasMoreElements()){
             System.out.println(days.nextElement()); 
          }

    位集合(Bitset)

    一个Bitset类创建一种特殊类型的数组来保存位值。BitSet中数组大小会随需要增加。这和位向量(vector of bits)比较类似。
    这是一个传统的类,但它在Java 2中被完全重新设计。

    BitSet定义了两个构造方法。

    第一个构造方法创建一个默认的对象:
    BitSet()
     
    第二个方法允许用户指定初始大小。所有位初始化为0。
    BitSet(int size)

    例如:

          BitSet bits1 = new BitSet(16);
         // set some bits
         for(int i=0; i<16; i++) {
            if((i%2) == 0) bits1.set(i);
         }
         System.out.println("Initial pattern in bits1: ");
         System.out.println(bits1);

    向量

    Vector类实现了一个动态数组,也能通过索引访问。和ArrayList和相似,但是两者是不同的:
    Vector是同步访问的。
    Vector包含了许多传统的方法,这些方法不属于集合框架。
    Vector主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。

    Vector类支持4种构造方法。

    第一种构造方法创建一个默认的向量,默认大小为10:
    Vector()
     
    第二种构造方法创建指定大小的向量。
    Vector(int size)
     
    第三种构造方法创建指定大小的向量,并且增量用<em>incr</em>指定. 增量表示向量每次增加的元素数目。
    Vector(int size,int incr)
     
    第四中构造方法创建一个包含集合c元素的向量:
    Vector(Collection c)

    例如:

          Vector v = new Vector(3, 2);
          System.out.println("Initial size: " + v.size());
          System.out.println("Initial capacity: " +
          v.capacity());

    栈(Stack)实现了一个后进先出(LIFO)的数据结构。
    你可以把栈理解为对象的垂直分布的栈,当你添加一个新元素时,就将新元素放在其他元素的顶部。
    当你从栈中取元素的时候,就从栈顶取一个元素。换句话说,最后进栈的元素最先被取出。
    堆栈只定义了默认构造函数,用来创建一个空栈。

    Stack()

    堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。

    boolean empty() 
    测试堆栈是否为空。
     
    Object peek( )
    查看堆栈顶部的对象,但不从堆栈中移除它。
     
    Object pop( )
    移除堆栈顶部的对象,并作为此函数的值返回该对象。
     
    Object push(Object element)
    把项压入堆栈顶部。
     
    int search(Object element)
    返回对象在堆栈中的位置,以 1 为基数。

    实例如下:

    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);
       }
     
        public static void main(String args[]) {
          Stack st = new Stack();
          System.out.println("stack: " + st);
          showpush(st, 42);
          showpush(st, 66);
          showpush(st, 99);
          try {
             showpop(st);
          } catch (EmptyStackException e) {
             System.out.println("empty stack");
          }
       }
    }

    字典

    Dictionary类已经过时了。在实际开发中,你可以实现Map接口来获取键/值的存储功能。
    Map接口中键和值一一映射. 可以通过键来获取值。
    给定一个键和一个值,你可以将该值存储在一个Map对象. 之后,你可以通过键来访问对应的值。
    当访问的值不存在的时候,方法就会抛出一个NoSuchElementException异常.
    当对象的类型和Map里元素类型不兼容的时候,就会抛出一个 ClassCastException异常。
    当在不允许使用Null对象的Map中使用Null对象,会抛出一个NullPointerException 异常。
    当尝试修改一个只读的Map时,会抛出一个UnsupportedOperationException异常。

    实例:

          Map m1 = new HashMap(); 
          m1.put("Zara", "8");
          System.out.print("	" + m1);

    哈希表

    Hashtable是原始的java.util的一部分, 是一个Dictionary具体的实现 。
    然而,Java 2 重构的Hashtable实现了Map接口,因此,Hashtable现在集成到了集合框架中。它和HashMap类很相似,但是它支持同步。
    像HashMap一样,Hashtable在哈希表中存储键/值对。当使用一个哈希表,要指定用作键的对象,以及要链接到该键的值。
    然后,该键经过哈希处理,所得到的散列码被用作存储在该表中值的索引。

    Hashtable定义了四个构造方法。

    第一个是默认构造方法:
    Hashtable()
     
    第二个构造函数创建指定大小的哈希表:
    Hashtable(int size)
     
    第三个构造方法创建了一个指定大小的哈希表,并且通过<em>fillRatio</em>指定填充比例。
    填充比例必须介于0.0和1.0之间,它决定了哈希表在重新调整大小之前的充满程度:
    Hashtable(int size,float fillRatio)
     
    第四个构造方法创建了一个以M中元素为初始化元素的哈希表。
    哈希表的容量被设置为M的两倍。
    Hashtable(Map m)

    例如:

          Hashtable balance = new Hashtable();
          Enumeration names;
          String str;
          balance.put("Zara", new Double(3434.34));
          balance.put("Mahnaz", new Double(123.22));
          names = balance.keys();
          while(names.hasMoreElements()) {
             str = (String) names.nextElement();
             System.out.println(str + ": " +
             balance.get(str));
          }
          //Zara: 3434.34
          //Mahnaz: 123.22

    属性

    Properties 继承于 Hashtable表示一个持久的属性集.属性列表中每个键及其对应值都是一个字符串。
    Properties 类被许多Java类使用。例如,在获取环境变量时它就作为System.getProperties()方法的返回值。
    Properties 定义如下实例变量.这个变量持有一个Properties对象相关的默认属性列表。

    Properties defaults;

    Properties类定义了两个构造方法.

    第一个构造方法没有默认值。
    Properties()
     
    第二个构造方法使用propDefault作为默认值。两种情况下,属性列表都为空:
    Properties(Properties propDefault)
  • 相关阅读:
    iPhone 6和iPhone 6 plus的AV Foundation框架特性
    实时人脸识别
    相机 视频流数据--预览 拍照 变焦
    AVCaptureStillImageOutput获取静态图像
    jquery返回上一页面
    js闭包
    一些正则匹配
    嵌套 click 第二层 click会叠加 导致 触发 多次
    QPS
    除了汉字全部过滤
  • 原文地址:https://www.cnblogs.com/lely/p/10183227.html
Copyright © 2020-2023  润新知