Java集合框架(三)

01.集合(Map概述)

我感觉就是C#中的字典Dictionary。
Map集合的基本特点:
该集合存储键值对,是一对一对往里存,而且要保证键的唯一性。

添加:
put(key,value)
putAll()
删除:
clear();
remove(Object obj);按键值删除
判断:
containsKey(Object obj)
containsValue(Object obj)
isEmpty()
获取:
get(Object obj)
size()
values();返回的是Collection<T>

entrySet()
keySet()

02.集合(Map子类对象特点)

Map:
HashTable:底层是Hash表数据结构,不可以存入null值和null键。该集合是线程同步的。jdk1.0.效率低。
HashMap:底层是hash表数据结构,允许使用null键和null值,该集合是不同步的。jkd1.2.效率高。
TreeMap:底层是二叉树数据结构,线程不同步,可以用于给map集合中的键进行排序。和Set很像,其实Set底层就是使用了Map集合。

03.集合(Map共性方法)

04.集合(Map-keySet)

Map集合的两种取出方式:
第一种keySet:将map中所有的键存入Set集合,因为Set具备迭代器,所有可以迭代方式取出所有的键,获取每一个键对应的值。

Map<String,String> map=new Map<String,String>();

map.put("02","zhangsan2");
map.put("03","zhangsan3");
map.put("04","zhangsan4");
map.put("05","zhangsan5");

Set<String> keySet=map.keySet();

Iterator<String> it=keySet.iterator();

while(it.hasNext())
{
 String key=it.next();
 String value=map.get(key);
 输出键和值;
}

map集合的取出原理:将map集合转成set集合,再通过迭代器取出。

05.集合(Map-entrySet)

第二种entrySet:
Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到set集合中,而这个关系的数据类型就是:Map.Entry。

Set<Map.Entry<String,String>> entrySet=map.entrySet();

Iterator<Map.Entry<String,String>> it=entrySet.iterator();
while(it.hasNext())
{
 Map.Entry<String,String> me=it.next();
 String key=me.geyKey();
 String value=me.getValue();
 这样就取出来了;
}

Map.Entry其实Entry也是一个接口,它是Map接口中的一个内部接口。
interface Map
{
 public static interface Entry
 {
  public abstract Object getKey();
  public abstract Object getValue();
 }
}

06.集合(Map练习)

需求:
没一个学生都有对应的归属地,学生Student,地址:String,学生属性:姓名,年龄
注意:姓名和年龄相同的视为同一学生,保证学生的唯一性。

思路:
1.描述学生。
2.定义map容器,将学生作为键,地址作为值,存入。
3.获取map集合中的元素。

以后创建类,这个类如果有多个对象且还有可能排序时,一定要实现Comparable接口,覆盖compareTo();hashCode();equals();三个方法。

07.集合(TreeMap练习)

需求:对学生对象的年龄进行排序。
因为数据是以键值对形式存在的,所以使用可以排序的map集合,TreeMap

08.集合(TreeMap练习--字母出现次数)

通过结果发现,每一个字母都有对应次数,说明字母和次数之间都有映射关系。
注意了:当发现有映射关系时,就要先想map集合。

思路:
1.将字符串转换成字符数组,因为要对每一个字母进行操作
2.定义一个map集合,因为打印结果的字母有序,所以使用treemap集合
3.遍历字符数组
将每一个字母作为键去查map集合
如果返回nulll,将该字母和1存到map集合
如果返回不是null,说明该字母在map集合已经存在并有对应次数,那么就获取该次数进行自增,然后将该字母和自增后的次数存入到map集合,覆盖原来键所对应的值
4.将map集合的数据变成指定的字符串形式返回。

09.集合(map扩展)

map集合被使用是因为具备映射关系。
HashMap<String,String> hm0=new HashMap<String,String>();
HashMap<String,HashMap<String,String>> hm1=new HashMap<String,HashMap<String,String>>();

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值