java中关于 字典的使用

如今java中的字典实现都是通过Map接口实现的。

定义一个字典:(关键字是字符类型,值是int类型)

Map<Character,Integer> map = new HashMap();

常用的方法:

序号方法描述
1Enumeration elements( )
返回此 dictionary 中值的枚举。
2Object get(Object key)
返回此 dictionary 中该键所映射到的值。
3boolean isEmpty( )
测试此 dictionary 是否不存在从键到值的映射。
4Enumeration keySet( )
返回此 dictionary 中的键的枚举。
5Object put(Object key, Object value)
将指定 key 映射到此 dictionary 中指定 value。添加键值对,若键已存在,则覆盖旧值。
6Object remove(Object key)
从此 dictionary 中移除 key (及其相应的 value)。
7

int size( )
返回此 dictionary 中条目(不同键)的数量。 

8

Map.getOrDefault(Object key, V defaultValue)

当Map集合中有这个key时,就使用这个key值;如果没有就使用默认值defaultValue。返回key的原来的值。

使用迭代器访问字典:

生成迭代器:Iterator<Map.Entry<Character,Integer>> iter=map.entrySet().iterator();

map的迭代器,用作遍历map中的每一个键值对

Iterator是迭代器,map之前应该定义过,姑且认为是HashMap。

Map.Entry<Character,Integer>表示map中的键值对是Character和Integer类型的。

map.entrySet()是把HashMap类型的数据转换成集合类型。

map.entrySet().iterator()是去获得这个集合的迭代器,保存在iter里面。

 迭代器这么用:

while(iter.hasNext()) {

Entry obj = it.next();//就能获得map中的每一个键值对了
}

Iterator<String> iter;//声明一个迭代器,泛型里面是String类型,表示迭代元素是String类型的。

Iterator<Entry<String,String>> iter;//而你提供的要稍微复杂一点,迭代元素本身就是一个Entry键值对,

Entry<String,String>表示其key值是String,value值也是String。

HashSet set=map.entrySet();//将map类型数据转换成集合set类型的。

iter=set.iterator();//获得集合的迭代器。迭代器只针对集合类型的数据,

因此map类型的必须先转换成集合类型才能使用迭代器去获取元素。

keySet获得的只是key值的集合,

values获得的是value集合,

entryset获得的是键值对的集合。

关于 Map.Entry 接口

Map 的 entrySet() 方法返回一个实现 Map.Entry 接口的对象集合。集合中每个对象都是底层 Map 中一个特定的键 / 值对。通过这个集合的迭代器,您可以获得每一个条目 ( 唯一获取方式 ) 的键或值并对值进行更改。

(1) Object getKey(): 返回条目的关键字

   (2) Object getValue(): 返回条目的值

   (3) Object setValue(Object value): 将相关映像中的值改为 value ,并且返回旧值

当条目通过迭代器返回后,除非是迭代器自身的 remove() 方法或者迭代器返回的条目的 setValue() 方法,其余对源 Map 外部的修改都会导致此条目集变得无效,同时产生条目行为未定义。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值