网站首页 > java教程 正文
Java中的数据结构除了上一篇中的集合框架(Collection)外,还主要包括7种接口和类:
1.枚举接口——Enumeration
说明:不属于数据结构,主要在数据结构中枚举集合中的元素。
2.位集合类——BitSet
说明:创建一种特殊类型的数组用来保存位值,数组大小会随需要增加,在处理一组布尔值的时候非常有用。
3.向量类——Vector
说明:和数组类似,在创建对象的时候不用给对象指定大小,大小能根据需要动态变化。
4.栈——Stack
说明:后进先出的数据结构。
5.字典类——Dictionary
说明:抽象类,提供了键映射到值的数据结构。
6.哈希表类——Hashtable
说明:提供了一种在用户定义键结构的基础上来组织数据的手段,是一个Dictionary具体的实现。
7.属性——Properties
说明:继承了Hashtable,属性中每个键及其对应的值都是字符串,持久的属性集。
一、Enumeration:
方法:
1.boolean hasMoreElements()
是否有下一个元素。
2.Object nextElement()
如果有下一个元素,返回下一个元素。
例子:
Enumeration enum;
Vector ver = new Vector();
ver.add("a");
ver.add("b");
ver.add("c");
enum = ver.elements();
while(enum.hasMoreElements()){
System.out.println(enum.nextElement());
}
二、BitSet:
两个构造方法:
1.BitSet()
2.BitSet(int size)
指定初始大小,所有位初始值为0。
主要方法:
1.and(BitSet set)
和参数set进行逻辑与操作。
2.andNot(BitSet set)
清除BitSet中所有的与参数set相同的位。
3.int cardinality()
返回为true的位数。
4.clear()
将所有的位设为false。
5.clear(int index)
将index处的位设为false。
6.clear(int startIndex, int endIndex)
将startIndex到endIndex范围内的位设为false(范围大于等于startIndex,小于endIndex)。
7.clone()
复制。
8.equals(Object bitSet)
比较。
9.flip(int index)
将index处的位设为其当前值的补码。
10.flip(int startIndex, int endIndex)
将startIndex到endIndex范围内的每个位设置为其当前值的补码。
11.get(int index)
返回index处的位值。
12.get(int startIndex, int endIndex)
返回从startIndex到endIndex范围内的位。
13.hashCode()
哈希值。
14.intersects(BitSet bitSet)
如果参数bitSet中有为true的位,并且BitSet中其也为true,返回ture。
15.isEmpty()
如果没有任何为true的位,返回ture。
16.int length()
返回最高位的索引加 1。
17.int nextClearBit(int startIndex)
指定起始索引startIndex,返回第一个为false的位的索引。
18.int nextSetBit(int startIndex)
指定起始索引startIndex,返回第一个为true的位的索引。
19.or(BitSet bitSet)
执行逻辑或操作。
20.set(int index)
将指定索引index处的位设为true。
21.set(int index, boolean v)
将指定索引index处的位设为指定的值v。
22.set(int startIndex, int endIndex)
将startIndex到endIndex范围内的位设为true。
23.set(int startIndex, int endIndex, boolean v)
将将startIndex到endIndex范围内的位设为指定的值v。
24.size()
返回表示位值时实际使用空间的位数。
25.toString()
返回字符串表示形式。
26.xor(BitSet bitSet)
和参数bitSet执行逻辑异或操作。
例子:
BitSet bits1 = new BitSet(10);
BitSet bits2 = new BitSet(10);
for(int i=0; i<10; i++) {
if((i%2) == 0) bits1.set(i);
if((i%5) != 0) bits2.set(i);
}
System.out.println(bits2.and(bits1));
System.out.println(bits2.or(bits1));
三、Vector:
四个构造方法:
1.Vector()
默认大小为10。
2.Vector(int size)
创建指定大小的向量。
3.Vector(int size,int incr)
创建指定大小的向量,并且用incr指定每次增加的元素数目。
4.Vector(Collection c)
创建一个包含集合c元素的向量
主要方法和list类似,这里不再说明。
四、Stack :
主要方法:
1.empty()
堆栈是否为空。
2.peek()
查看堆栈顶部的对象。
3.pop()
移除堆栈顶部的对象,并返回该对象。
4.push(Object element)
把项放到堆栈顶。
5.search(Object element)
返回在堆栈中的位置,以 1 为基数。
例子:
Stack st = new Stack();
st.push(new Integer(2));
st.push(new Integer(7));
Integer a = (Integer) st.pop();
Integer b = (Integer) st.pop();
System.out.println(a);
System.out.println(b);
五、Dictionary:
主要方法和Map类似。
六、Hashtable:
四个构造方法:
1.Hashtable()
2.Hashtable(int size)
创建指定大小的哈希表。
3.Hashtable(int size,float fillRatio)
创建指定大小的哈希表,并且通过fillRatio指定填充比例。
填充比例必须介于0.0和1.0之间,它决定了哈希表在重新调整大小之前的充满程度。
4.Hashtable(Map m)
创建以m中元素为初始化元素的哈希表。
哈希表的容量是m的两倍。
主要方法:
除了Map中定义的方法外,还有以下方法:
1.clear()
将哈希表清空。
2.Object clone()
复制。
3.contains(Object value)
表中是否存在与指定值关联的键。
4.boolean containsKey(Object key)
指定对象是否为哈希表中的键。
5.boolean containsValue(Object value)
如果哈希表将一个或多个键映射到此value值,则返回true。
6.Enumeration elements()
返回哈希表中值的枚举。
7.get(Object key)
如果此映射包含(key.equals(k))的从k到值v的映射,则返回v,否则返回null。
8.boolean isEmpty()
是否没有键映射到值。
9.Enumeration keys()
返回键的枚举。
10.put(Object key, Object value)
将指定key映射到表中指定value。
11.rehash()
增加表的容量并对其重组,以便更有效地容纳和访问元素。
12.remove(Object key)
移除该键及其对应的值。
13.int size()
返回键的数量。
14.String toString()
返回字符串表示形式,其形式为 ASCII 字符。
七、Properties:
两个构造方法:
1.Properties()
2.Properties(Properties propDefault)
使用propDefault作为默认值。
两种情况下,属性列表都为空。
主要方法:
1.String getProperty(String key)
用指定的键在属性列表中搜索属性。
2.String getProperty(String key, String defaultProperty)
用指定的键在属性列表defaultProperty中搜索属性。
3.list(PrintStream streamOut)
将属性列表输出到指定的输出流streamOut。
4.list(PrintWriter streamOut)
将属性列表输出到指定的输出流streamOut。
5.load(InputStream streamIn) throws IOException
从输入流中读取属性列表(键和元素对)。
6.Enumeration propertyNames()
从输入字符流中读取属性列表(键和元素对)。
7.setProperty(String key, String value)
调用Hashtable的方法put。
8.store(OutputStream streamOut, String description)
将Properties表中的属性列表(键和元素对)写入输出流streamOut。
例子:
Properties per = new Properties();
Set set;
String str;
per.put("a", "aaa");
per.put("b", "bbb");
per.put("c", "ccc");
set = per.keySet();
Iterator iter = set.iterator();
while(iter.hasNext()) {
str = (String) iter.next();
System.out.println(str + per.getProperty(str));
}
str = per.getProperty("a");
System.out.println(str);
猜你喜欢
- 2024-09-11 阿里架构师剖析:Redis常用数据类型对应的数据结构
- 2024-09-11 聊聊经典数据结构HashMap,逐行分析每一个关键点
- 2024-09-11 压箱底Redis面试集-48.Redis 的 ListPack 数据结构是什么?
- 2024-09-11 JAVA进阶知识学习-day03 数据结构&List集合&Set集合
- 2024-09-11 Java数据结构面试必问:HashMap 底层实现原理分析
- 2024-09-11 Java路径-31-Java数据结构(我的世界java路径错误怎么办)
- 2024-09-11 《数据结构》第九篇、java中ArrayList源码解析
- 2024-09-11 JDK源码分析--Object(jdk1.8源码详细介绍)
- 2024-09-11 「Java数据结构」Java对象的比较(java对比两个对象属性的变化)
- 2024-09-11 动图+源码,演示Java中常用数据结构执行过程及原理
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)