当前位置: 代码迷 >> Java相关 >> HashMap数据读取问题,求教!(这次是个新的问题,上个帖子时间太长,无法编辑了 ...
  详细解决方案

HashMap数据读取问题,求教!(这次是个新的问题,上个帖子时间太长,无法编辑了 ...

热度:108   发布时间:2009-08-30 10:11:03.0
HashMap数据读取问题,求教!(这次是个新的问题,上个帖子时间太长,无法编辑了)
上一个问题,感谢pywepe的回答,谢谢
这回,我写了3个类
public class Map{}  用于存储数据,里面有put()方法和get()方法
public class Test {}  用于输入数据
public class Enter {}  用于读取数据,并输出
现在的问题是,我添加完数据后,在Test {}  里直接调用get()方法能把数据全输出
但是我使用Enter {} 输出数据就全为null,

自己分析可能是   public class Enter {
                    Map m = new Map();    //这里出了问题,new 出一个新的Map
                 ........
                 }
现在我想在别的类里读取原来的数据,Enter {}类应该怎么写?

程序代码:
import java.util.*;
public class Map{
     private HashMap<String, String> map;

     public Map(){
        this.map=new HashMap<String,String>();
     }
   
     public void put(String key,String value){
         this.map.put(key,value);
     }
   
     public void get(){
         Set keySet = map.keySet();
        Iterator<String> it= keySet.iterator();
        while(it.hasNext()) {
            String key = it.next();
            String val = map.get(key);
            System.out.println(key + " " + val);
        }
     }
}

程序代码:
import java.util.*;
public class Test {
    public static void main(String[] args) {
        Map m = new Map();
        Enter en = new Enter();
        Scanner sc = new Scanner(System.in);
        for(int i = 0 ; i < 3 ; i++){
        String key = sc.next();
        String val = sc.next();
        m.put(key,val);
        }
        m.get();
        en.enter();
    }
}

程序代码:
public class Enter {
    Map m = new Map();
    public void enter(){
         m.get();
    }
}
搜索更多相关的解决方案: 帖子  数据  HashMap  时间  

----------------解决方案--------------------------------------------------------
传入持有对方的引用。就是将Map类传入到Enter中。
----------------解决方案--------------------------------------------------------
大概理解了,但是不知道怎么写
----------------解决方案--------------------------------------------------------
回复 3楼 星辰浩月
你不是喜欢传参数吗
传参数也行呀
....
  class Enter{
     public static void read(Map<Object,Object> map){
       ...
     }
  }

----------------解决方案--------------------------------------------------------
我知道可以传递,那这样的话
public class Test {
    public static void main(String[] args) {
        ......
        en.enter();  // 这里也要传递进去en.enter(map);  可是这里并没有定义map呀
    }
}

我也想过传递,但是传来传去,不觉得有点太麻烦吗?
而且如果我在Map里定义了2个HashMap(map1, map2),我就不知道怎么使用返回值了
----------------解决方案--------------------------------------------------------
继续等帮助
----------------解决方案--------------------------------------------------------
回复 6楼 星辰浩月

写一个类
Map
有关它的方法全部封装在它自己里面 ,不要又说XXX类来执行输出操作
public abstract class MapFather{

    public abstract void put(...自己写);
    public abstract void get(...);
    ...
    //Map 就extends 这个类吧

}

----------------解决方案--------------------------------------------------------
  相关解决方案