Map集合集合练习.docx

上传人:b****4 文档编号:4075497 上传时间:2022-11-27 格式:DOCX 页数:18 大小:403.12KB
下载 相关 举报
Map集合集合练习.docx_第1页
第1页 / 共18页
Map集合集合练习.docx_第2页
第2页 / 共18页
Map集合集合练习.docx_第3页
第3页 / 共18页
Map集合集合练习.docx_第4页
第4页 / 共18页
Map集合集合练习.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

Map集合集合练习.docx

《Map集合集合练习.docx》由会员分享,可在线阅读,更多相关《Map集合集合练习.docx(18页珍藏版)》请在冰豆网上搜索。

Map集合集合练习.docx

Map集合集合练习

Map集合、集合练习

1.Map集合

1.1.Map集合介绍

Collection集合的特点:

集合中存储的所有元素都是单一元素,元素和元素之间没有必然的关系。

因此我们把Collection集合也称为单列集合。

Map集合:

Map集合中保存的是一组(一对)数据。

数据之间存在着一定的对应关系。

Map集合就可以将数据的对应关系维护起来。

当这样的数据存储在Map集合中,我们取出的时候,就可以根据这种对应关系获取到其中这组数据。

publicinterfaceMap

将键映射到值的对象。

一个映射不能包含重复的键;每个键最多只能映射到一个值。

Map集合中的key是唯一的。

每个key都有一个value值和其一一对应。

1.2.Map集合中的方法

1.2.1.添加方法

通过演示Map接口中的Map方法,发现put方法可以将指定的一组数据保存到集合中。

但是put方法有返回值:

如果调用put方法的时候,在保存的key和value值时,key在集合中不存在,这时相当于给集合中保存了一组新的数据。

这时put方法得到的null。

如果保存的这组数据中的key在集合中已经存在,这时会用当前的value值覆盖掉key对应的原来的value值,并返回被覆盖的那个value值。

总结:

put方法可以将一组对象保存到Map中,返回的当前key对应的原始的value值。

如果key是第一次出现返回的null。

如果不是第一次,就会修改原始的value值。

返回原来的value值

1.2.2.删除方法

根据指定的key,删除key和value这组数据,返回key对应的value值。

/*

*演示Map中的删除方法

*/

publicclassMapDemo2{

publicstaticvoidmain(String[]args){

//创建集合对象

Mapmap=newHashMap()。

map.put("aa","bb")。

map.put("cc","dd")。

map.put("ee","fff")。

System.out.println(map)。

//删除方法

Objecto=map.remove("aaa")。

System.out.println(o)。

System.out.println(map)。

//清空

map.clear()。

System.out.println(map)。

}

}

1.2.3.获取方法

根据指定的key获取对应的value值。

如果给出的key在集合中没有,返回null。

/*

*Map集合中的获取方法

*/

publicclassMapDemo3{

publicstaticvoidmain(String[]args){

//创建集合对象

Mapmap=newHashMap()。

map.put("aa","bb")。

map.put("cc","dd")。

map.put("ee","fff")。

//打印

System.out.println(map)。

Objecto=map.get("aa")。

System.out.println(o)。

System.out.println(map)。

}

}

1.2.4.判断方法

/*

*演示Map集合中的判断方法

*/

publicclassMapDemo4{

publicstaticvoidmain(String[]args){

//创建集合对象

Mapmap=newHashMap()。

map.put("aa","bb")。

map.put("cc","dd")。

map.put("ee","fff")。

//判断集合中是否包含指定的key

System.out.println(map.containsKey("aa"))。

System.out.println(map.containsValue("bb"))。

System.out.println(map.isEmpty())。

}

}

1.3.Map集合的遍历

1.3.1.Map集合遍历介绍

Map集合中保存的key-value一组数据。

它们不能直接使用Iterator进行遍历。

如果需要对Map集合进行遍历,这时必须先将Map集合转成Collection下的某个集合容器,然后再使用Iterator进行遍历。

Map集合的遍历有两种方式:

1、获取Map中的所有key,然后将这些key保存到Set集合中。

这时就可以使用Iterator进行遍历,进而就能得到每个的单独的key值,再使用Map中的get(key)方法得到key对应的value值。

2、获取到Map中的key和value这组数据,再封装成一个新的对象。

1.3.2.keySet遍历

/*

*使用Map集合中的keySet方法遍历Map集合

*/

publicclassKetSetDemo{

publicstaticvoidmain(String[]args){

//创建集合对象

Mapmap=newHashMap()。

map.put("aa","bb")。

map.put("cc","dd")。

map.put("ee","ff")。

//获取到Map中的所有key组成的Set集合

Setset=map.keySet()。

//遍历Set集合

for(Iteratorit=set.iterator()。

it.hasNext()。

){

//获取到Set集合中的某个key值

Objectkey=it.next()。

//调用Map集合中的get方法,得到key对应的value值

Objectvalue=map.get(key)。

System.out.println(key+"...."+value)。

}

}

}

1.3.3.entrySet遍历

/*

*使用Map集合中的entrySet方法遍历Map集合

*/

publicclassEntrySetDemo{

publicstaticvoidmain(String[]args){

//创建集合对象

Mapmap=newHashMap()。

map.put("aa","bb")。

map.put("cc","dd")。

map.put("ee","ff")。

//获取到所有key和value组成的Entry对象,保存到Set集合中

Setset=map.entrySet()。

//遍历Set集合

for(Iteratorit=set.iterator()。

it.hasNext()。

){

//已经获取到key和value组成的Entry对象

Objectobj=it.next()。

//由于取出的数据被提升成Object类型,这时需要向下转型

Entryentry=(Entry)obj。

System.out.println(entry.getKey()+"...."+entry.getValue())。

}

}

}

就业班中学习JavaWEB中的JSP中的JSTL技术时,其中有foreach的标签,遍历Map集合的时候,使用的entrySet。

1.3.4.values方法

获取到的Map集合中的所有value值组成的Collection集合。

/*

*演示Map集合中的values方法

*/

publicclassValuesDemo{

publicstaticvoidmain(String[]args){

//创建集合对象

Mapmap=newHashMap()。

map.put("aa","bb")。

map.put("cc","dd")。

map.put("ee","ff")。

//获取到Map集合中的所有value值

Collectioncoll=map.values()。

//遍历集合

for(Iteratorit=coll.iterator()。

it.hasNext()。

){

System.out.println(it.next())。

}

}

}

1.4.HashMap演示

基于哈希表的Map接口的实现。

此实现提供所有可选的映射操作,并允许使用null值和null键。

(除了非同步和允许使用null之外,HashMap类与Hashtable大致相同。

)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

HashMap是Map接口的实现类,它的底层使用的哈希表。

哈希表作用在HashMap集合的key上。

当使用自定义对象作为HashMap集合的key值时,这个自定义对象所属的类需要复写Object类中的hashCode和equals方法。

/*

*演示HashMap,使用自定义对象作为Map的key值

*/

publicclassHashMapDemo{

publicstaticvoidmain(String[]args){

//创建集合对象

HashMapmap=newHashMap()。

map.put(newPerson("张三",23),"上海")。

map.put(newPerson("张三",23),"上海")。

map.put(newPerson("李四",33),"北京")。

map.put(newPerson("王五",39),"东莞")。

//获取所有的key组成的set集合

Setset=map.keySet()。

//遍历

for(Iteratorit=set.iterator()。

it.hasNext()。

){

Objectkey=it.next()。

//获取value值

Objectvalue=map.get(key)。

System.out.println(key+"...."+value)。

}

}

}

1.5.TreeMap演示

基于红黑树(Red-Blacktree)的NavigableMap实现。

该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的Comparator进行排序,具体取决于使用的构造方法。

TreeMap的底层是二叉树结构。

二叉树作用在集合的key上。

TreeMap集合可以对保存在其中的元素进行排序。

如果将对象保存在TreeMap集合中,key上的这个对象应该具备比较的功能,key上的对象所属的类应该实现Comparable接口。

或者是在创建TreeMap的时候,传递一个Comparator对象。

/*

*使用自定义对象作为TreeMap的key值

*/

publicclassTreeMapDemo{

publicstaticvoidmain(String[]args){

//创建对象

TreeMapmap=newTreeMap()。

map.put(newPerson("张三",23),"上海")。

map.put(newPerson("张三",23),"上海")。

map.put(newPerson("李四",33),"北京")。

map.put(newPerson("王五",33),"东莞")。

//使用entrySet方法进行遍历

Setset=map.entrySet()。

for(Iteratorit=set.iterator()。

it.hasNext()。

){

Objectobj=it.next()。

Entryentry=(Entry)obj。

System.out.println(entry.getKey()+"....."+entry.getValue())。

}

}

}

1.6.Map练习:

/*

*需求:

统计字符串中每个字符的次数。

*

*分析:

*字符串数据是不确定的数据。

其中的字符是什么也不知道,

*但是我们可以只要这个字符出现过,就需要给出一个计数器统计这个字符的次数

*

*遍历字符串,取出每个字符,然后判断它是否已经在统计的计数器中出现过,

*如果出现过,就给这个计数器+1,如果没有出现过,说明这个字符是第一次出现

*就给这个字符的计数器赋值为1.

*

*统计字符的次数:

*字符次数

*使用从字符串中取出的字符作为Map的key值,次数作为Map的value值

*只要从字符串中取出一个字符,就判断当前这个字符在Map的key中是否存在,

*如果存在,就取出对应的value值+1,再保存到Map中。

如果不存在,就说明

*字符是第一次出现,直接给value值为1,保存到Map中。

*

*/

publicclassMapTest{

publicstaticvoidmain(String[]args){

Strings="djfjsdl使用从字符串中取出的字符作为Map的key值,次数作为Map的value值"。

//需要定义一个集合

Mapmap=newHashMap()。

//遍历字符串

for(inti=0。

i

i++){

//取出字符

charch=s.charAt(i)。

//判断当前的字符在Map中是否存在

if(map.containsKey(ch)){

//判断成立说明当前从字符串中取出的字符,已经出现过

Integervalue=(Integer)map.get(ch)。

//给value+1,再保存到Map中

value=value+1。

map.put(ch,value)。

}else{

//判断不成立,说明当前的字符是第一次出现

map.put(ch,1)。

}

}

//遍历Map集合,取出每个字符的次数

Setset=map.keySet()。

for(Iteratorit=set.iterator()。

it.hasNext()。

){

Objectkey=it.next()。

Objectvalue=map.get(key)。

System.out.println("'"+key+"'出现的次数是:

"+value)。

}

}

}

1.7.Hashtable演示

此类实现一个哈希表,该哈希表将键映射到相应的值。

任何非null对象都可以用作键或值。

Hashtable集合它属于Map集合,但是是JDK1.0时期的,底层是哈希表,和HashMap功能一致。

它是安全的。

/*

*演示古老的双列集合Hashtable

*/

publicclassHashtableDemo{

publicstaticvoidmain(String[]args){

//创建集合对象

Hashtabletable=newHashtable()。

table.put("aa","bb")。

table.put("ccc","ddd")。

table.put("ccc","ddd")。

table.put("eee","fff")。

//遍历

Enumerationen=table.keys()。

while(en.hasMoreElements()){

Objectkey=en.nextElement()。

Objectvalue=table.get(key)。

System.out.println(key+"...."+value)。

}

}

}

2.工具类介绍

工具类:

在JDK中提供大量的类。

但是这些类都有对用的功能。

可是某些的功能并不能满足实际的所有需求,于是针对这些类有提供的其他的类,处于辅助其他类的这些类被称为工具类。

JDK中的工具类一般都以s结尾。

并且工具类中的所有方法全部是静态的。

2.1.Collections工具类

此类完全由在collection上进行操作或返回collection的静态方法组成。

它包含在collection上操作的多态算法,即“包装器”,包装器返回由指定collection支持的新collection,以及少数其他内容。

Collections:

中的方法都是静态的,可以操作集合。

反转List集合中的元素。

反转比较器。

结论:

在使用集合的时候,如果发现需要使用集合的某个功能,但是自身没有这时就需要考虑使用Collections中的方法。

2.2.Arrays工具类

Arrays工具类中提供的大量可以操作数组的方法(折半查找、复制、排序、比较等)。

asList:

它的功能是将一个数组转成List集合。

目的是希望通过使用集合的方法来操作数组。

 

/*

*演示Arrays中的方法,将数组转成集合

*/

publicclassArraysDemo{

publicstaticvoidmain(String[]args){

//Integer[]arr={11,22,33,44,55,66,77,88}。

int[]arr={11,22,33,44,55,66,77,88}。

//将数组转成集合

Listlist=Arrays.asList(arr)。

System.out.println(list)。

//求最大值

Objectmax=Collections.max(list)。

System.out.println(max)。

Collections.reverse(list)。

System.out.println(list)。

}

}

结论:

数组转成集合的时候,只能将引用类型的数组中空间中的每个对象转后存储到集合中。

基本类型数组作为一个整体存储在集合中。

集合转成数组:

直接使用Collection接口中的toArray方法完成。

3.集合综合练习

学生的信息经管:

可以键盘录入学生信息,并将信息添加到集合中。

可以查询每个学生的信息。

可以删除学生的信息。

可以修改学生的信息。

1、需要给出提示,让用户选择当前的操作类型(增加、删除、修改、查询)学生信息

2、根据输入的类型进行区分,调用不同功能完成实现。

 

参考day17_test工程

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1