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);
}
}
}
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 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();
}
}
Map m = new Map();
public void enter(){
m.get();
}
}
----------------解决方案--------------------------------------------------------
传入持有对方的引用。就是将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 这个类吧
}
----------------解决方案--------------------------------------------------------