keySet()返回的是一个key的集合;<br><br><br><br>
EntrySet()返回值是所有键值对的一个集合;<br><br><br><br>
<br><br><br>
Entry类是Map的一个内部类,其泛型是和当前使用的Map是相同的;
Set<Entry<xxx,xxx>> set name = mapName.entrySet();//将返回内容放入带有泛型为Entry<xxx,xxx>的set中
<br><br><br>
entrySet的返回类型为Entry类的类型,返回值可以用set<Entry>来接收,<br><br><br>
如果map定义了泛型,则也要在上述接收的set中的Entry中说明:如写成:set<Entry<xxx,xxx>><br><br><br>
<br><br><br><br>
Set、List的添加 、修改、删除方法类似<br><br><br><br>
添加——add/addAll<br><br><br><br>
修改——set<br><br><br><br>
删除——remove/removeAll<br><br><br><br>
<br><br><br><br>
Map<br><br><br><br>
添加:使用的是put——put(key, value)<br><br>
修改:同样使用的也是put方法——是对指定key的value进行修改,put(key, newValue);<br><br>
获取Map中的对象,使用的是get方法——get(key),返回值是key对应的value;value是什么类型的就用什么类型接收;<br>
删除:使用的是remove方法——通过的是删除key的方式删除整个对象;如:MapName.remove(key1);
删除Map中的学生


entrySet()方法返回的是Entry的Set类型,而Entry也有泛型:
Set<Map.Entry<String,Student>> entrySet = students.entrySet();
得到Set类型的entrySet之后再用foreach循环遍历entrySet:
for(Map.Entry<String,Student> entry : entrySet){
System.out.println("得到键值:"+entry.getKey());
System.out.println("得到对应的值:"+entry.getValue().name);
}getKey()方法得到entry的键值,getValue()方法得到entry的对应的值,再这里得到的是Student类型的对象。
public static void main(String[] args){
MapTest mt = new MapTest();
mt.testPut();
mt.testKeySet();
mt.testRemove();
mt.testEntrySet();
}
public void testKeySet(){
Set<String>keySet = student.keySet();
System.out.println("总共有:"+students.size()+"个学生");
for(String stuId:keySet){
Student st = students.get(stuId);
if(st!=null)
System.out.println("学生:"+st.name);
}
}
通过entrySet方法,返回Map中的所有键值对
通过remove方法删除Map元素
注意:删除前需要先通过get方法判断需要删除的Key是否存在。
Map增删改查:
增:map的put(key,value)方法添加。
查:1.利用keyset()方法获得Map中key的集合。再遍历key的集合,利用 Map的get(key)方法得到key对应的value值。
2.利用EntrySet方法获取May中Entry对象集。然后用foreach遍历 集,再用Entry集的getkay()和getvalue()方法得到每一个key值和 value值。
删:remove(object key)
改:put(原有的key,新的value)
通过entrySet可以返回Map中的所有键值对
Set<Entry<String,Student>>entrySet = students.entrySet();
HashMap 类的方法已经写好,所以你调用HashMap 类的方法的时候当然要用它自己的名字,例如
Haspmap实例名字.get(KEY)----返回对应的对象方法 ;
Haspmap实例名.put(Key, Value)----修改对应键的 Value;
首先 Haspmap实例名字.EntrySet <K,V> 也是HashMap 类已经写好的方法,返回一个 Entry<K,Y> 类型的对 象object.
这个key之是什么说法
entrySet方法遍历Map
entrySet()
getValue()取得的值是Student类的对象地址,故还需加上Student的id或者name,且Entry的泛型也是<String,Student>
entrySet是Set集合名,故entry是每一个元素,entry.getKey(),就是求键值,并没有指定的ID要放入括号里
Map中get(ID)能取得对应的student对象
keyset()方法返回所有键的集合
entrySet方法返回Map中的所有键值对
回顾:getKey()返回键,getValue()返回值
map的remove删除方法
entrySet方法,返回Set<Entry<K,V>>,即map中所有键值对
100%
Map 键值对 键和值均可以是null对象, 但是键只能有一个null 因为键名是不可重复的 常用用途:使用时KeySet返回键集合Set<K>值时,判断键名是否为null, 判断键值对是否存在
代码案例如下
Set<Entry<String, Student>> entrySet = students.entrySet();
for (Entry<String,Student> entry:entrySet) {
println.out.println(entry.getKey());
}
先判断key有没有对应的value
students.remove(key);
entrySet返回所有键值对的集合Entry类
Set<Entry<String,Student>> es=students.entrySet();
for(Entry<String,Student> e:es)
{
e.getKey();
e.getValue().name;
}
public void testRemove() {
Scanner input = new Scanner(System.in);
while(true) {
System.out.println("你要删除的学生id:");
String str = input.next();
Student stu = student.get(str);
if(stu==null) {
System.out.println("该id不存在!");
continue;
}
student.remove(str);
System.out.println("删除学生"+stu.name+"成功");
break;
}}
public void testPrint1() {
Set<Entry<String,Student>> entry = student.entrySet();
for (Entry<String, Student> entry2 : entry) {
System.out.println("取得的键为:"+entry2.getKey());
System.out.println("取得的值为:"+entry2.getValue().name);
}
}
public void testPrint2() {
Collection<Student> stu = student.values();
for (Student student : stu) {
System.out.println(student.name);
}
}
map 中的hashmap集合的方法put,remove,get, 用来增加,删除,查元素
keySet获取所有的键的集合,entrySet返回所有的键值对的集合
getKey()获取键,getValue()获取值
可以用keySet遍历 keySet是键的集合
可以用entrySet遍历(entrySet是整个map的键值对的集合 Entry是键值对)
entry本身也是有泛型的,它的泛型和当初规定的Map的泛型是一样的。所以,在定义entry泛型的时候,同时要给entry的泛型定义上。
Map中的删除:


通过entrySet方法遍历Map:(entry是Map的内部类)

entry Set遍历
Map的remove方法来删除

Map的第二种遍历方法entrySet
通过entrySet方法,返回Map中的所有键值对的集合

Entry本身也是带有泛型的,他的泛型和定义Map时所规定的泛型一样
再通过foreach来遍历entrySet
entrySet的用法:
Map<String,String> map = new HashMap<String,String>();
map.put("a","b");
//通过entrySet()方法将map集合中的映射关系取出,得到的映射关系是Map.Entry类型
Set<Map.Entry<String,String>> entrySet = map.entrySet();
Iterator<Map.Entry<String,String>> it = entrySet.iterator(); //迭代器
while (it.hasNext()){
Entry<String,String> next = it.next();
String key = next.getKey();
String value = next.getValue();
}
private void testPut() {
// TODO Auto-generated method stub
//创建一个Scanner对象,用来获取输入的学生ID和姓名
Scanner console = new Scanner(System.in);
int i = 0;
while(i<3){
System.out.println("请输入学生ID");
String ID = console.next();
Student st=students.get(ID);
if(st==null){
System.out.println("请输入学生姓名:");
String name=console.next();
Student newStudent=new Student(ID,name);
students.put(ID, newStudent);
System.out.println("成功添加学生:"+students.get(ID).name);
i++;
}else{
System.out.println("该学生ID已被占用!");
continue;
}
}
}
public void testKeySet() {
// TODO Auto-generated method stub
Set<String>KeySet=students.keySet();
System.out.println("总共有:"+students.size()+"个学生!");
for(String stuId:KeySet){
Student st=students.get(stuId);
if(st!=null){
System.out.println("学生:"+st.name);
}
}
}
删除Map中的映射
public void testRemove(){
while(true){
System.out.println("请输入要删除的学生id");
Scanner console=new Scanner(System.in);
String ID=console.next();
Student st=students.get(ID);
if(st==null){
System.out.println("该ID不存在!");
continue;
}
students.remove(ID);
System.out.println("成功删除学生:"+st.name);
break;
}
}
Map增删改查: 增:map的put(key,value)方法添加。 查:1.利用keyset()方法获得Map中key的集合,再遍历key的集合,利用Map的get(key)方法得到key对应的value值。 2.利用EntrySet方法获取May中Entry对象集:然后用foreach遍历集,再用Entry集的getkay()和getvalue()方法得到每一个key值和value值。 删:remove(object key) 改:put(原有的key,新的value) 通过entrySet可以返回Map中的所有键值对 Set<Entry<String,Student>>entrySet = students.entrySet();
HashMap 类的方法已经写好,所以你调用HashMap 类的方法的时候当然要用它自己的名字,例如
Haspmap实例名字.get(KEY)----返回对应的对象方法 ;
Haspmap实例名.put(Key, Value)----修改对应键的 Value;
首先 Haspmap实例名字.EntrySet <K,V> 也是HashMap 类已经写好的方法,返回一个 Entry<K,Y> 类型的对 象object.
Map 删除:
remove ( 键值 ) ;
即可删除,
使用entrySet()方法,可以返回键和键值这一对,但是得先创建一个Set类型的属性,且 泛型 为 Entry 类型,
在使用foreach遍历这个属性,就可以随意调用 键 和 键值 了,分别是用getKey()方法和getValue()方法来调用。
Demo/MapTest
Map中的Hash Map
创建方法与List的类似(key,value)
添加与修改都是.put方法
删除是remove
遍历可用keySet(value)、entrySet(映射)
//测试删除Map中的映射
public void testRemove(){
//获取从键盘输入的待删除学生ID字符串
Scanner console=new Scanner(System.in);
while(true){
//提示输入待删除的学生ID
System.out.println("请输入要删除的学生ID!");
String ID=console.next();
//判断该ID是否有对应的学生对象
Student st=students.get(ID);
if(st==null){
//提示输入的ID并不存在
System.out.println("该ID不存在!");
continue;}
students.remove(ID);
System.out.println("成功删除学生:"+st.name);
break;}}
//通过entrySet方法遍历Map
public void testEntrySet(){
//通过entrySet方法,返回Map中的所有键值对
Set <Entry<String,Student>>entrySet=students.entrySet();
for(Entry<String,Student>entry:entrySet){
System.out.println("取得键:"+entry.getKey());
System.out.println("对应的值为:"+entry.getValue().name);}
}
//main方法中调用
mt.testRemove();
mt.testEntrySet();
Map增删改查: 增:map的put(key,value)方法添加。 查:1.利用keyset()方法获得Map中key的集合,再遍历key的集合,利用Map的get(key)方法得到key对应的value值。 2.利用EntrySet方法获取May中Entry对象集:然后用foreach遍历集,再用Entry集的getkay()和getvalue()方法得到每一个key值和value值。 删:remove(object key) 改:put(原有的key,新的value) 通过entrySet可以返回Map中的所有键值对 Set<Entry<String,Student>>entrySet = students.entrySet();
HashMap 类的方法已经写好,所以你调用HashMap 类的方法的时候当然要用它自己的名字,例如
Haspmap实例名字.get(KEY)----返回对应的对象方法 ;
Haspmap实例名.put(Key, Value)----修改对应键的 Value;
首先 Haspmap实例名字.EntrySet <K,V> 也是HashMap 类已经写好的方法,返回一个 Entry<K,Y> 类型的对 象object.