Map中<key,value>,key保存的是ID,value存的是一组ID和name吗? 映射具体在哪里有应用到?
Map中的<Key,Value>是两个Object对象,也就是说,任何对象都可以充当这对Key或Value,至于是什么具体的对象,这需要按照你的业务逻辑来进行设计。
什么是Map?其实就是一种映射关系。何为映射?就是Key与Value一一对应的关系,我们可以通过Key查找到我们想要的数据,亦即Value。我们可以把Map和数组来进行简单的对比:
现在,有十个学生,我们想把这十个学生的班级记录下来
String[] arr = new Array[10]; Map<String,Strng> map = new HashMap<String,String>();
如果是使用数组,我们只能用数字索引的办法去储存或者读取数据,也就是说,你得去考虑数组的第几个元素是谁。但是我们可以使用Map来解决这个问题:用学生的姓名来作为Key,班级作为Value:
String stuName = "张三"; String class = "高三一班"; map.put(stuName,class);
就可以将这组数据储存到Map里面。当你想要使用的时候直接用:
String newClass = map.get("张三");
来得到张三的班级。而不用去考虑顺序。
如果你想储存更大的信息。你可以建一个Student的类,来储存学生信息,把Map的Value设置成Student
class Student{ private String name; private String class; private int age; private String studentNum; ... } Map<String,Student> map = new HashMap<String,Student>(); Student student = new Student(); map.put("张三",student);//保存张三这个对象
取的时候:
Student stu = map.get("张三");
然后你就能对张三这个Student对象进行操作了。事实上Map<K,V>中的K,V就是泛型。不光是Map,在Java中List、Set对象都是这样的实习机制,你可以灵活的使用泛型来实现自己的业务。就像下面的这些例子:
Map<Map<String,String>,Map<String,String>> map = new HashMap<Map<String,String>,Map<String,String>>(); Map<String, ArrayList<String>> map1 = new HashMap<String,ArrayList<String>>(); ...
这要理解了这些,就能够灵活的使用了。