Java 如何修改和删除地图对象

Java 如何修改和删除地图对象,java,Java,我定义了一张地图,里面存放了对象,我想修改里面的键,值怎么修改? 代码如下: package maptest; /** * test Map * * @author admin *@version 2012.8.29 */ public class TestA { private String name; private String password; private String idnum; // name. public void setName(String nam

我定义了一张地图,里面存放了对象,我想修改里面的键,值怎么修改? 代码如下:

package maptest;

/**
 * test Map
 * 
 * @author admin
 *@version 2012.8.29
 */

public class TestA {

private String name;
private String password;
private String idnum;

// name.
public void setName(String name) {
    this.name = name;
}

public String getName() {
    return name;
}

// password

public void setPassword(String password) {
    this.password = password;
}

public String getPassword() {
    return password;
}

// idnum

public void setIdnum(String idnum) {
    this.idnum = idnum;
}

public String getIdnum() {
    return idnum;
}

}

===========================================================

    package maptest;

import java.util.HashMap;
import java.util.Map;

/**
 * Test Map
 * 
 * @author admin
 *@version 2012.8.29
 */

public class TestB {

Map<Object, Object> map = new HashMap<Object, Object>();// map.

public void show() {
    TestA tes = new TestA();
    tes.setName("a");// name
    tes.setPassword("a123");// password
    tes.setIdnum("01");// idnum

    map.put(tes, tes);// add map.

    TestA tes1 = new TestA();

    tes1.setName("b");// name
    tes1.setPassword("a1234");// password
    tes1.setIdnum("02");// idnum

    /*
     * Assuming in accordance setIdnum ("02"), how to delete the name and
     * password of it belongs to?
     */

    map.put(tes1, tes1);// add map.

    TestA tes2 = new TestA();

    tes2.setName("c");// name
    tes2.setPassword("a12345");// password
    tes2.setIdnum("03");

    /*
     * Assuming in accordance setIdnum ("03") to find the name and password,
     * and then modify one of the password, concrete should be how to
     * achieve?
     */

    map.put(tes2, tes2);// add map.
}

public void showmap() {// show map
    for (Object c : map.keySet()) {
        System.out.println("Name>>>:" + ((TestA) map.get(c)).getName());
        System.out.println("Password>>>:"
                + ((TestA) map.get(c)).getPassword());
        System.out.println("Idnum>>>:" + ((TestA) map.get(c)).getIdnum());
        System.out.println("---------------------");
    }
    System.out.println("end.");
}

public static void main(String[] args) {
    // TODO Auto-generated method stub
    TestB te = new TestB();
    te.show();
    te.showmap();
}

}

==========================================
包映射测试;
/**
*测试图
* 
*@author-admin
*@版本2012.8.29
*/
公共类遗嘱{
私有字符串名称;
私有字符串密码;
私有字符串idnum;
//名字。
公共void集合名(字符串名){
this.name=名称;
}
公共字符串getName(){
返回名称;
}
//密码
public void setPassword(字符串密码){
this.password=密码;
}
公共字符串getPassword(){
返回密码;
}
//idnum
公共void setIdnum(字符串idnum){
this.idnum=idnum;
}
公共字符串getIdnum(){
返回idnum;
}
}
===========================================================
包映射测试;
导入java.util.HashMap;
导入java.util.Map;
/**
*测试图
* 
*@author-admin
*@版本2012.8.29
*/
公共类TestB{
Map Map=newhashmap();//映射。
公开展览({
遗嘱=新约遗嘱();
tes.setName(“a”);//名称
tes.setPassword(“a123”);//密码
tes.setIdnum(“01”);//idnum
map.put(tes,tes);//添加映射。
TestA tes1=新约书();
tes1.setName(“b”);//名称
tes1.setPassword(“a1234”);//密码
tes1.setIdnum(“02”);//idnum
/*
*假设按照setIdnum(“02”),如何删除名称和
*它的密码属于谁?
*/
map.put(tes1,tes1);//添加映射。
TestA tes2=新约书();
tes2.setName(“c”);//名称
tes2.setPassword(“a12345”);//密码
tes2.setIdnum(“03”);
/*
*假设根据setIdnum(“03”)查找名称和密码,
*然后修改一个密码,具体应该怎么做
*实现?
*/
map.put(tes2,tes2);//添加映射。
}
public void showmap(){//showmap
对于(对象c:map.keySet()){
System.out.println(“Name>>>:”+((TestA)map.get(c)).getName();
System.out.println(“密码>>>:”
+((TestA)map.get(c)).getPassword();
System.out.println(“Idnum>>>:”+((TestA)map.get(c)).getIdnum();
System.out.println(“--------------------------”;
}
System.out.println(“结束”);
}
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
TestB te=新的TestB();
te.show();
te.showmap();
}
}
==========================================

列出并设置删除、修改和映射?

您的
java.util.Map.put(kk,vv)
实际上做了两件事

1) 如果在地图中找不到密钥,它会添加一个条目

2) 如果它为所提到的键找到一个条目,它将修改条目的值

当我们调用
java.util.Map.Remove(K)
时,就会发生Remove。它将删除包含键值对的条目。

您可以使用

map.keySet().remove(obj);

我找不到映射我放的普通变量,因为我是通过一个对象放的,因此,我不知道如何修改,也找不到对应的键就把它去掉。不要用你的TestA对象作为键。而是考虑使用名称或ID作为密钥。我假设它们是唯一的;int s1=0;int s2=1;int s3=2;地图放置(s1,对象);那么你可以用s1或s2来表示这个意思?是的。这就是我说的。如果列表(ArrayList)我们应该怎么做?例如删除。