实习生五六七 发表于 2020-2-29 14:42:42

Map集合删除其中的特定的元素

题目为:创建Map集合,创建Emp对象,并将Emp对象添加到集合中(Emp对象的id作为Map集合的键),并将id为015的对象从集合中移除。删除语句该怎么写


import java.util.HashMap;
class Emp{
        private String e_id;
        private String e_name;
        public Emp(String name,String id) {//构造方法
                this.e_id=id;
                this.e_name=name;
        }
        public void setId(String id) {
                this.e_id=id;
        }
        public String getId() {
                return e_id;
        }
        public void setName(String name) {
                this.e_name=name;
        }
        public String getName() {
                return e_name;
        }
}

public class Test3 {

        public static void main(String[] args) {
                Map<String, String> map=new HashMap<>(); //由HashMap实现Map对象
               
                Emp emp1=new Emp("011","li");//创建Emp对象
                Emp emp2=new Emp("012","da");
                Emp emp3=new Emp("013","ad");
                Emp emp4=new Emp("014","sw");
                Emp emp5=new Emp("015","ws");
               
                map.put(emp1.getId(), emp1.getName());//将对象添加进集合中
                map.put(emp2.getId(), emp2.getName());
                map.put(emp3.getId(), emp3.getName());
                map.put(emp4.getId(), emp4.getName());
                map.put(emp5.getId(), emp5.getName());
                Set<String> set=map.keySet();//获取map集合中key对象集合
                Iterator <String> it=set.iterator();
                while(it.hasNext()) {
                        String str=(String)it.next();
                        String name=(String)map.get(str);
                        System.out.println(name+""+str);
                }

        }

}

蒋博文 发表于 2020-2-29 14:42:43

public static void main(String[] args) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("1", "test1");
map.put("2", "test2");
map.put("3", "test3");
map.put("4", "test4");

//完整遍历Map
for (Entry<String, String> entry : map.entrySet()) {
System.out.printf("key: %s value:%s\r\n", entry.getKey(), entry.getValue());
}

//删除元素
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while(it.hasNext()){
Map.Entry<String, String> entry= it.next();
String key= entry.getKey();
int k = Integer.parseInt(key);
if(k%2==1){
   System.out.printf("delete key:%s value:%s\r\n", key, entry.getValue());
   it.remove();
}
}

//完整遍历Map
for (Entry<String, String> entry : map.entrySet()) {
System.out.printf("key: %s value:%s\r\n", entry.getKey(), entry.getValue());
}
}
结果:

key: 1 value:test1
key: 2 value:test2
key: 3 value:test3
key: 4 value:test4
delete key:1 value:test1
delete key:3 value:test3
key: 2 value:test2
key: 4 value:test4


注意

但对于iterator的remove()方法,也有需要我们注意的地方:

每调用一次iterator.next()方法,只能调用一次remove()方法。

调用remove()方法前,必须调用过一次next()方法。

JDK-API中对于remove()方法的描述:

void remove()从迭代器指向的集合中移除迭代器返回的最后一个元素(可选操作)。每次调用 next 只能调用一次此方法。如果进行迭代时用调用此方法之外的其他方式修改了该迭代器所指向的集合,则迭代器的行为是不明确的。

抛出:UnsupportedOperationException - 如果迭代器不支持 remove 操作。IllegalStateException - 如果尚未调用 next 方法,或者在上一次调用 next 方法之后已经调用了remove 方法。

蒋博文 发表于 2020-2-29 17:37:00

可以直接用remove()

蒋博文 发表于 2020-2-29 17:38:47

或者是del 删除
del info[“”]

蒋博文 发表于 2020-3-1 12:24:38

如果对你有帮助。请设置最佳答案。谢谢{:10_254:}

实习生五六七 发表于 2020-3-1 15:24:06

蒋博文 发表于 2020-3-1 12:24
如果对你有帮助。请设置最佳答案。谢谢

可以写一下语句嘛,因为是初学,所以一些方法调用,不知道该如何写进去

蒋博文 发表于 2020-3-1 17:27:40

实习生五六七 发表于 2020-3-1 15:24
可以写一下语句嘛,因为是初学,所以一些方法调用,不知道该如何写进去

你是想要JAVA的代码还是python的?

实习生五六七 发表于 2020-3-2 11:14:53

蒋博文 发表于 2020-3-1 17:27
你是想要JAVA的代码还是python的?

java的,麻烦了

蒋博文 发表于 2020-3-2 17:28:04

本帖最后由 蒋博文 于 2020-3-2 17:29 编辑

下一个是,
页: [1]
查看完整版本: Map集合删除其中的特定的元素