Java之旅_高级教程_数据结构
摘自:http://www.runoob.com/java/java-data-structures.html
了解即可
Java 数据结构
Java 工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类:
- 枚举(Enumeration)
- 位集合(BitSet)
- 向量 (Vector)
- 栈 (Stack)
- 字典 (Dictionary)
- 哈希表 (Hashtable)
- 属性 (Properties)
以上这些类是传统遗留的,在 Java2 中引入了一种新的框架-集合框架(Collection),我们后面再讨论。
枚举(Enumeration)
枚举(Enumeration)接口虽然它本身不属于数据结构,但它在其他数据结构的范畴里应用很广。枚举(Enumeration)接口定义了一种从数据结构中取回连续元素的方式。
例如 ,枚举定义了一个叫 nextElement 的方法 ,该方法用来得到一个包含多元素的数据结构的下一个元素。
Java Enumeration 接口
Enumeration 接口中定义了一些方法,通过这些方法可以枚举(一次获得一个)对象集合中的元素。
这种传统接口已被迭代器取代,虽然 Enumeration 还未被遗弃,但在现代代码中已经被很少使用了。
位集合 (BitSet)
位集合类实现了一组可以单独设置和清除的位或标志。
该类在处理一组布尔值的时候非常有用,你只需要给每个值赋值一“位”,然后对位进行适当的设置或清除,就可以对布尔值进行操作了。
向量 (Vector)
向量 (Vector) 类和传统数组非常相似,但是 Vector 的大小 能根据需要动态的变化。
和数组一样,Vector 对象的元素也能通过索引访问。
使用Vector 类最主要的好处就是在创建对象的时候不必给对象指定大小 ,它的大小会根据需要动态的变化。
栈 (Stack)
栈 (Stack)实现了一个后进先出(LIFO)的数据结构。--Last In First Out
你可以把栈理解为对象的垂直分布的栈,当你添加一个新元素时,就将新元素放在其他元素的顶部。
当你从栈中取元素的时候,就从栈顶取一个元素。换句话说,最后进栈的元素最先被取出。
Java Stack 类
栈是 Vector 的一个子类,这实现了一个标准的后进先出的栈。
椎栈只定义了默认构造函数,用来创建一个空栈。堆栈除了包括由 Vector 定义的所有方法,也定义了自己的一些方法。
Stack()
除了由 Vector 定义的所有方法,自己也定义了一些方法:
| 序号 | 方法描述 |
| 1 |
boolean empty() 测试堆栈是否为空。 |
| 2 |
Object peek() 查看堆栈顶部的对象,但不从堆栈中移除它。 |
| 3 |
Object pop() 移除堆栈顶部的对象,并作为此函数的值返回该对象。 |
| 4 |
Object push(Object element) 把项压入堆栈顶部。 |
| 5 |
int search(Object element) 返回对象在堆栈中的位置,以1为基数。 |
实例
下面这个程序说明这个集合所支持的几种方法:
package javaLearn;
import java.util.*; public class StackDemo{ static void showpush(Stack<Integer> st,int a){
st.push(new Integer(a));
System.out.println("Stack:"+st);
} static void showpop(Stack<Integer> st){
Integer a=(int)st.pop();
System.out.println("pop->"+a);
} public static void main(String[] args){
Stack<Integer> st = new Stack<Integer>();
showpush(st,42);
showpush(st,66);
showpush(st,99);
showpop(st);
showpop(st);
showpop(st);
System.out.println("stack:"+st);
try{
showpop(st);
}catch(EmptyStackException e){
System.out.println("empty stack");
}
}
}
运行结果
Stack:[42]
Stack:[42, 66]
Stack:[42, 66, 99]
pop->99
pop->66
pop->42
stack:[]
empty stack
字典(Dictionary)--已经过时
字典 ( Dictionary ) 类是一个抽象类,它定义了键映射到值的数据结构。
当你想要通过特定的键而不是整数索引来访问数据的时候,这时候应该使用Dictionary。
由于 Dictionary 类是抽象类,所以它只提供了键映射到值的数据结构,而没有提供特定的实现。
哈希表(Hashtable)
Hashtable类提供了一种在用户定义键结构的基础上来组织数据的手段。
例如,在地址列表的哈希表中,你可以根据邮政编码作为键来存储和排序数据,而不是通过人名。
哈希表键的具体含义完全取决于哈希表的使用情景和它包含的数据。
属性(Properties)
Properties 继承于 Hashtable。 Properties 类表示了一个持久的属性集。属性列表中每个键及其对应值都是一个字符串。
Properties 类被许多Java类使用。例如,在获取环境变量时它就作为System.getPropeties()方法的返回值。
Java之旅_高级教程_数据结构的更多相关文章
- Java之旅_高级教程_网络编程
摘自:http://www.runoob.com/java/java-networking.html JAVA网络编程 网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来. j ...
- Java之旅_高级教程_实例_文件操作
1.文件写入 import java.io.*; public class MainClass{ public static void main(String[] args){ try{ Buffer ...
- Java之旅_高级教程_实例_数组
摘自:http://www.runoob.com/java/java-examples.html 1.数组排序及元素查找 以下实例演示了如何使用sort()方法对Java数组进行排序,及如何使用 bi ...
- Java之旅_高级教程_序列化
摘自 :http://www.runoob.com/java/java-serialization.html Java序列化 Java提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字 ...
- Java之旅_高级教程_多线程编程
摘自:http://www.runoob.com/java/java-multithreading.html Java 多线程编程 Java 给多线程编程提供了内置的支持.一条线程指的是进程中的一条执 ...
- Java之旅_高级教程_实例_打印图形
1.打印菱形 public class MainClass{ public static void main(String[] args){ printStar(10); } public stati ...
- FastStone Capture(FSCapture) 注册码 _图形图像_软件教程_脚本之家
FastStone Capture(FSCapture) 注册码 _图形图像_软件教程_脚本之家 FastStone Capture 注册码 序列号: name/用户名:TEAM JiOO key/注 ...
- Java之旅_高级教程_URL处理
摘自 :http://www.runoob.com/java/java-url-processing.html Java URL 处理 URL(Uniform Resource Locator)中文名 ...
- java之旅_高级教程_java泛型
摘自:http://www.runoob.com/java/java-generics.html JAVA泛型 java泛型(generics)是JDK5中引入的新特性,泛型提供了编译时类型安全检测机 ...
随机推荐
- python虚拟环境virtualenv的安装与使用
如果我们要同时开发多个应用程序,每个应用可能需要各自拥有一套“独立”的Python运行环境,我们可以使用virtualenv解决这个问题,它可以为一个应用创建一套“隔离”的Python运行环境. 一. ...
- vue处理用户输入
为了让用户和你的应用进行互动,可以用 v-on 指令绑定一个监听事件用于调用我们 Vue 实例中定义的方法: <div id="app-5"> <p>{{ ...
- 【转】VMware Tools installation cannot be started manually while Easy Install is in progress.
我HOST 是WIN7也遇到了这样的问题 我这样做的:进入系统以后在你VM的下面会有几个图标:关于1,CD DVD 2,disk 3,floppy 4,网络连接... 选择floppy--settin ...
- laravel5.4中验证与错误提示设置
1.对于交互提交数据,验证如: #验证 $this->validate(\request(),[ 'title' => 'required|string|min:3|max:20', 'c ...
- BigDecimal - Java精确运算
(1).浮点数精确计算 项目中一直存在一个问题,就是每次报表统计的物资金额和实际的金额要差那么几分钱,和实际金额不一致,让客户觉得总是不那么舒服,原因是因为我们使用java的浮点类型double来定义 ...
- SpringSecurity兑现多登录成功页面和登录成功返回被拦截界面
SpringSecurity实现多登录成功页面和登录成功返回被拦截界面 使用SrpingSceurity作为认证和授权的安全框架可以省下很多基础工作. 具体可以参考SpringSecurity,这里不 ...
- css - 兼容适配坑点总结(。。。)
1. transform为代表的这些css3属性一定要写-webkit-,不然低版本(目前遇到的是8)的苹果,不支持. 2. x的适配 /* x */ @media only screen and ( ...
- jenkins实战(二):构建自由风格的maven项目
本系列打算全面介绍jenkins的常规使用,这是第二篇,之前的文章在: jenkins实战(一):war安装及插件安装 一.新建项目 1.新建项目 此处我们打算新建自由风格项目,见下图. 值得注意的是 ...
- js的server worker创建子进程
类似nodejs的 child_process.fork() // index.html 主线程 function isClose(data){ if(data === 0) return true; ...
- linux 常用 掌握要点 详细终结
linux 命令大全 每个开发者应该了解的 10 个 Linux 命令 1.查看正在执行的进程(Process) ps命令 Process Status 进程状态 语法: ps [option] ...