Java中7种的数据结构

Java中7种的数据结构

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);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值