文档章节

Java数据结构(上)

Firefly-
 Firefly-
发布于 11/11 23:30
字数 875
阅读 25
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

  1. 枚举(Enumeration
  2. 位集合(BitSet
  3. 向量(Vector
  4. 栈(Stack

1.Enumeration(枚举)

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

使用:

package com.day5;

import java.util.Enumeration;
import java.util.Vector;

/**
 * @author SFJ
 * @date 2019/11/11
 * @time 22:24
 **/
public class Test2 {
    public static void main(String[] args) {
        Enumeration<String>days;
        Vector<String>dayNo = new Vector<String>();
        dayNo.add("Sun");
        dayNo.add("Mon");
        dayNo.add("Tue");
        dayNo.add("Wed");
        dayNo.add("Thu");
        dayNo.add("Fri");
        dayNo.add("Sat");
        days = dayNo.elements();
        while (days.hasMoreElements())
        {
            System.out.println(days.nextElement());
        }

    }
}

2.BitSet(位集合

一个Bitset类创建一种特殊类型的数组来保存位值。BitSet中数组大小会随需要增加。这和位向量(vector of bits)比较类似。

BitSet定义了两个构造方法。

1:构造方法(无参数)

BitSet()//创建默认对象

2:允许用户指定初始大小,所有位初始化为0

BitSet(int size)//数组的长度指定

使用:

package com.day5;

import java.util.BitSet;

/**
 * @author SFJ
 * @date 2019/11/11
 * @time 23:02
 **/
public class Test3 {
    public static void main(String[] args) {
        BitSet bits1 = new BitSet(16);
        BitSet bits2 = new BitSet(16);

        for(int i=0; i<16; i++) {
            if((i%2) == 0) bits1.set(i);
            if((i%3) != 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);
    }

}

3.Vector(向量)

Vector类和数组相似,但是Vector的大小能根据需要动态的变化。和数组一样,Vector对象的元素也能通过索引访问。使用Vector类最主要的好处就是在创建对象的时候不必给对象指定大小,它的大小会根据需要动态的变化。Vector 类实现了一个动态数组。和 ArrayList 很相似,还存在不同:

  1. Vector 同步访问
  2. Vector 包含了许多传统的方法,这些方法不属于集合框架

构造方法:

  1. 无参构造,默认值为10
    Vector()

     

  2. 制定创建大小
    Vector(int size)

     

  3. 指定大小,指定增量每次增加的元素个数
    Vector(int size,int incr)

     

  4. 包含集合C元素向量
    Vector(Collection c)

    使用:

package com.day5;

import java.util.Enumeration;
import java.util.Vector;

/**
 * @author SFJ
 * @date 2019/11/11
 * @time 23:12
 **/
public class Test4
{
    public static void main(String[] args) {
        // initial size is 3, increment is 2
        Vector v = new Vector(5, 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 additions: " + v.capacity());
        v.addElement(new Double(2.23));
        System.out.println("Current capacity: " +v.capacity());
        v.addElement(new Double(5.764));
        v.addElement(new Integer(7));
        System.out.println("Current capacity: " +v.capacity());
        v.addElement(new Float(3.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();
    }

}
}

 

4.Stack(栈)

  • 后进先出(LIFO),即对象的垂直分布的栈,当你添加一个新元素时,就将新元素放在其他元素的顶部,从栈中取元素的时候,就从栈顶取一个元素。换句话说,最后进栈的元素最先被取出

    Stack()
    package com.day5;
    
    import java.util.Stack;
    
    /**
     * @author SFJ
     * @date 2019/11/11
     * @time 23:24
     **/
    public class Test5 {
        public static void main(String[] args) {
            Stack<Integer> st = new Stack<Integer>();
            System.out.println("stack: " + st);
            showpush(st, 1);
            showpush(st, 2);
            showpush(st, 3);
            showpop(st);
            showpop(st);
            showpop(st);
            showpop(st);
        }
    
        static void showpush(Stack<Integer> st, int a) {
            st.push(new Integer(a));
            System.out.println("push(" + a + ")");
            System.out.println("stack: " + st);
        }
    
        static void showpop(Stack<Integer> st) {
            System.out.print("pop:");
            Integer a = (Integer) st.pop();
            System.out.println(a);
            System.out.println("stack: " + st);
        }
    
    
    }
    

     

 

© 著作权归作者所有

Firefly-
粉丝 2
博文 19
码字总数 19657
作品 0
私信 提问
JVM内存结构 VS Java内存模型 VS Java对象模型

Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模型和...

Java架构
2018/07/11
0
0
Java udp程序 如何接收c 语言udp发送的结构体数据

有一个wifi探针设备,会不断向java提供的udp服务器发送udp 结构体数据,java udp服务程序需要接收 探针设备发送的 用 c写的结构体数据,如下是C 的接收数据,如何转为java接收 结构体数据, ...

KerryLi
2017/08/18
346
1
Scala和Java在多核处理性能的一次对比和思考

今天在网络上看到了一篇关于Scala和java多线程对比的文章《Simple Scala actor Vs java Thread Vs Kilim Test,原文链接:http://www.blogjava.net/BlueDavy/archive/2009/11/25/303662.html......

qinhui99
2012/05/13
1K
3
Java虚拟机JVM内部体系结构

Java虚拟机JVM内部体系结构 易百教程移动端:请扫描本页面底部(右侧)二维码并关注微信公众号,回复:"教程" 选择相关教程阅读或直接访问:http://m.yiibai.com 。 JVM(Java虚拟机)是一个抽象...

LYQ1990
2018/07/18
352
0
JAXB 应用指南

文章转自:http://blog.csdn.net/darxin/article/details/4845820 JAXB(Java Architecture for XML Binding)是一种特殊的序列化/反序列化工具。它可以使XML数据以Java Objects的形式直接应...

红薯
2011/08/06
4.8K
0

没有更多内容

加载失败,请刷新页面

加载更多

web前端入门到实战:图解原生dialog标签(非常详细)

在html5中,新增了很多语义化的标签。如footer、header之类的,今天的主角是dialog标签 顾名思义,就是用来定义对话框的。目前只有Chrome和Safari支持该标签,所以用的不多,不过确实挺好用的...

梦想编程
20分钟前
3
0
一些php常用函数积累

本文链接<?php// id: ecffe70d3af54df9bad97b61918ace7d global $ct_path, $ct_log_path;$log_path = "test_php.txt";// 是否先log到buffer,再通过CT_flush()一次性写入文件$......

一字见心
21分钟前
3
0
IntelliJ idea中 注释代码折叠

visual studio中有#region 可以折叠代码,IntelliJ idea 中也有类似功能 //region 描述代码//endregion

format
21分钟前
4
0
oracle表中更改主键

一、数据表有主键但无主键约束名 先删除之前的主键,后添加主键 ,执行SQL: a. alter table 表名 drop primary key; b. alter table 表名 add primary key(想要更改的字段名称); 二、数据表...

_Somuns
23分钟前
3
0
jQuery AJAX提交表单

我有一个名称为orderproductForm的表单,输入的数量不确定。 我想做某种jQuery.get或ajax或类似的事情,它将通过Ajax调用页面,并发送所有形式为orderproductForm的输入。 我想一种方法是做类...

技术盛宴
28分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部