黑马程序员技术交流社区
标题:
Map的疑惑
[打印本页]
作者:
梁航斌
时间:
2013-4-8 12:02
标题:
Map的疑惑
本帖最后由 梁航斌 于 2013-4-9 08:18 编辑
map只能存一个键一个值,有没有办法,让它存的东西多一点呢?
作者:
绿树林
时间:
2013-4-8 12:10
你可以把一个对象的名字当成一个值,然后存进去,这样你就可以想存什么就写个对象存进去。
作者:
郭沐昌
时间:
2013-4-8 13:06
(1) 集合(Collection):一组单独的元素,通常应用了某种规则。在这里,一个 List(列表)必须按特定
的顺序容纳元素,而一个Set(集)不可包含任何重复的元素。相反,“包”(Bag)的概念未在新的集合库
中实现,因为“列表”已提供了类似的功能。
(2) 映射(Map):一系列“键-值”对(这已在散列表身上得到了充分的体现)。从表面看,这似乎应该成
为一个“键-值”对的“集合”,但假若试图按那种方式实现它,就会发现实现过程相当笨拙。这进一步证
明了应该分离成单独的概念。另一方面,可以方便地查看 Map的某个部分。只需创建一个集合,然后用它表
示那一部分即可。这样一来,Map 就可以返回自己键的一个Set、一个包含自己值的List 或者包含自己“键
-值”对的一个List。和数组相似,Map可方便扩充到多个“维”,毋需涉及任何新概念。只需简单地在一
个Map 里包含其他Map(后者又可以包含更多的Map,以此类推)。
作者:
王大斌
时间:
2013-4-8 13:12
map中的值可以存储任何对象,包括list set map和各种对象,这就使map更加广泛
作者:
whs_nk
时间:
2013-4-8 14:12
Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式存入或查看某个映射的内容,这里是一个题目,是Map的一个简单应用,通过理解希望能够帮到你哦
/*
题目:设某个学校有多个班级,班级中有多名学生,
试通过集合思想打印每个学生的信息(学号、姓名)
班级按1班,2班...顺序打印(不使用Collections)
分析:一个学校有多个班级,每个班级有多个学生,可以创建HashMap集合,
一次迭代取出班级信息,进而进行二次迭代,取出班级中的学生对象,
最后根据学生类提供的方法获取学号和姓名。
针对打印,可以设置班级比较器
*/
import java.util.*;
class Student//学生类
{
private String id;
private String name;
Student(String id,String name)
{
this.name = name;
this.id = id;
}
public String getName()
{
return name;
}
public String getId()
{
return id;
}
}
class SomeClass//教室类
{
private String className;
SomeClass(String name)
{
this.className = name;
}
public String getName()
{
return className;
}
}
class MapPromote
{
public static void main(String[] args)
{
//创建学校
HashMap<SomeClass,List<Student>> hp = new HashMap<SomeClass,List<Student>>();
List<Student> class1 = new ArrayList<Student>();//创建班级:一班,班级中的集合元素为学生
class1.add(new Student("001","lisi01"));//往一班添加学生
class1.add(new Student("002","lisi02"));
class1.add(new Student("003","lisi03"));
class1.add(new Student("004","lisi04"));
hp.put(new SomeClass("6班"),class1);
List<Student> class2 = new ArrayList<Student>();//创建班级:二班
class2.add(new Student("005","wangwu05"));//往二班添加学生
class2.add(new Student("006","wangwu06"));
class2.add(new Student("007","wangwu07"));
class2.add(new Student("008","wangwu08"));
hp.put(new SomeClass("1班"),class2);
Iterator<SomeClass> it = hp.keySet().iterator();//创建迭代器,遍历各班级
while(it.hasNext())
{
SomeClass myclass = it.next();
List<Student> stu = hp.get(myclass);//获得各班级的集合(即所有学生信息)
Iterator<Student> iter = stu.iterator();//创建班级集合的迭代器
//List集合直接使用iterator(),不含keySet()方法,无需进行集合转换
while(iter.hasNext())
{
Student st = iter.next();//获取学生对象
String id = st.getId();//获取学生学号
String name = st.getName();//获取学生姓名
System.out.println("班级:"+myclass.getName()+"--学号:"+id+"--姓名:"+name);//输出结果
}
}
}
}
复制代码
作者:
黄玉昆
时间:
2013-4-9 08:09
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2