c++ vector 结构_java数据结构

java工具包提供了强大的数据结构,在java中的数据结构主要包括以下几种接口和类  :

枚举(Enumeration)

位集合(BitSet)

向量(Vector)

栈(Stack)

字典(Dictionary)

哈希表(Hashtable)

属性(Properties)

枚举(Enumeration)

枚举接口虽然本身不属于数据结构,但它在其他数据结构的范畴里应用很广,枚举接口定义了一种从数据结构中取回连续元素的方式

例如,枚举定义了一个叫NEXElement的方法,该方法用来得到一个包含多元素的数据结构的下一个元素

Enumeration接口中定义了一些方法,通过这些方法可以枚举(一次获得一个)对象集合中的元素

这种接口传统类所定义的方法中,除此之外,还用一些API类,并且在应用中也被广泛使用,

Enumeration声明的方法:

7aa7d33b9c64e47ffc66e66e6a7cb5b8.png

实例:

9aa5432afcedcdbaee3000b8490d4205.png

打印结果:

7dfd4f4f5952dfa6f50dc957a2c72e3a.png

位集合(BitSet)

位集合实现了一组可以单独设置和清除的位或标志

该类在处理一组布尔值的时候非常有用,你只需要给每个赋值一“位”,然后对位进行适当的设置或清除,就可以对布尔值进行操作了

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

BitSet定义了两个构造方法

第一个构造方法创建一个默认的对象

BitSet()

第二个方法允许用户指定初始大小,所有位初始化为0

BitSet(int size)

BitSet中实现了Cloneable接口中定义的方法如下表所列:

25b55fe6be1182ac1aa3ee7137ddc4bd.png

实例:

a2839ce3d7e12827eb40a20e73cda655.png

打印结果:

302118776a319e765827cbde19f84e8c.png

向量(Vector):

向量类和传统数组非常相似,但是Vector的大小能根据需要动态的变化和数组一样,Vector对象的元素也能通过索引访问

使用Vector类最重要的好处就是创建对象的时候不必指定大小,它的大小会根据需要动态变化

Vector类实现了一个动态数组,和ArrayList很相似,但是两者是不同的:

Vector是同步访问的

Vector包含了许多传统的方法,这些方法不属于集合框架

Vector主要用在实现不知道数组的大小,或者只是需要一个可以改变大小的数组的情况

Vector类支持4种构造方法:

第一种构造方法创建一个默认的向量,默认大小为10;

Vector()

第二种构造方法创建指定大小的向量

Vector(int size)

第三种构造方法创建指定大小的向量,并且增量用incr指定,增量表示向量每次增加的元素数目

Vector(int size,int incr)

第四种构造方法创建一个包含集合c元素的向量

Vector(Collection c)

除了从父类继承的方法外Vector还定义了以下方法:

844ab20af61206ff60737f0cdc5b8106.png

实例:

8baa50e2201d54d1406045abe03b6c07.png

打印结果:

a85f328ef4c5b935f6099e8440113570.png

栈(Stack)

栈(Stack)实现了一个后进先出(LIFO)的数据结构

可以把栈理解为对象的垂直分布的栈,当你添加一个新元素时,就将新元素放在其他元素的顶部

当你从栈中取元素的时候,就从栈顶取一个元素,换句话说,最后进栈的元素最先被取出

栈是Vector的一个子类,它实现了一个标准的后进先出的栈

堆栈只定义了默认构造函数,用来创建一个空间,堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法

Stack()

除了由Vector定义的所有方法,自己也定义了一些方法

9e67edbadb28670e22a0d23831b83639.png

实例:

064d353098f602f6282d27e8301a222a.png

打印结果:

ab78542aa71f69a904679f8008b2d2dd.png

字典(Dictionary)

字典(Dictionary)类是一个抽象类,它定义了键映射到值的数据结构

当你想要通过特定的键而不是整数索引类访问数据的时候,这时候应该使用Dictionary

由于Dictionary类是抽象类,所以它只提供了键映射到值的数据结构,而没有提供特定的实现

Dictionary类是一个抽象类,用来储存键/值对,作用和Map类相似

给出键和值,你就可以将值储存在Dictionary对象中,一旦该值被存储,就可以通过它的键来获取它,所以和Map一样,Dictionary也可以作为一个键/值对列表

Dictionary定义的抽象方法如表所示:

027ffa24c9754d5dc46856b8e790ed5c.png

Dictionary类已经过时了,在实际开发中,你可以实现Map接口来获取键/值的存储功能

哈希表(Hashtable)

Hashtable类提供了一种在用户定义键结构的基础上来组织数据的手段

例如,在地址列表的哈希表中,你可以根据邮政编码作为键来存储和排序数据,而不是通过人名

哈希表键的具体含义完全取决于哈希表的使用情景和它包含的数据

Hashtable是原始的java.util的一部分,是一个Dictionary具体的实现

然而,java2重构的Hashtable实现了Map接口,因此,Hashtable现在集成到了集合框架中,它和HashMap类很相似,但它支持同步

像HashMap一样,HashTable在哈希表中存储键/值对,当使用一个哈希表,要指定作键的对象,以及要链接到该键的值

然后,该键经过哈希处理,所得到的散码被用存储在该表中值的索引

Hashtable定义了四个构造方法,

第一个是默认构造方法:

Hashtable()

第二个构造函数创建指定大小的哈希表:

Hashtable(int size)

第三个构造方法创建了一个指定大小的哈希表,并且通过fillRatio指定填充比例

填充比例必须介于0.0和0.1之间,它决定了哈希表在重新调整大小之前的充满程度:

Hashtable(int size,float fillRatio)

第四个构造方法创建一个以M中元素为初始化元素的哈希表

哈希表的容量被设置为M的两倍

Hashtable(Map m)

Hashtable中除了从接口中定义的方法外,还定义了以下方法

d09c08aaabe48c556123567d593381a0.png

实例:

2163ef1b3ba6563965225e6cd0215e5a.png

打印结果:

83df138c6a88fb85e5d72230920f3a4d.png

属性(Properties)

Properties继承于Hashtable.Properties类表示了一个持久的属性集,属于列表中每个键及其对应值都是一个字符串

Properties类被许多java类使用,例如,在获取环境变量时它就作为System.getProrerties()方法的返回值

Properties定义如下实例变量,这个变量持有一个Properties对象相关的默认属性列表

Properties defaults;

Properties类定义了两个构造方法,第一个构造方法没有默认值

Properties()

第二个构造方法使用propDefault作为默认值,两种情况下,属性列表都为空

Properties(Properties propDefault)

除了从HashTable中所定义的方法,Properties还定义了以下方法:

cf5c691fb87e04781eb36612f93bef62.png

实例:

2a227328b0a6a2500a9d9a6310c67f70.png

打印结果:

29f0fcd6b43c079f97d7a6d1366f8731.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值