编译错误由“新” TMap定义解决,而不是由可能的重复引用解决。我试图澄清这一点。我是Java Newbee,这是我的第一篇文章。
从那时开始,问题就无法从不同的类访问我的TMap。
话虽如此,我的认沽期权由于随后的Get with“ new”而丢失。我似乎无法不重新创建TMap而访问它。 事件顺序:定义/初始化TMap =>放置/获取到TMap =>使用“新”获取TMap。
我在Stackoverflow问题中发现了一些类似的好主意:“从不同的类访问HashMap”。
创建并初始化我的树形图“ DataStorage”和“放置/获取” PutDataStorage”类工作正常(成功加载并能够获取那些记录)。
我尝试使用“新的” DataStorage获取Get(因为我还没有弄清楚如何访问表),但失败了,原因是我创建了一个新的Tmap。
这些示例中我缺少一些内容。也许一个完整的例子会帮助我,而不是帮助别人。我喜欢作品的概念,但是现在还太新以至于无法欣赏各个作品,并且已经花了太多时间(反复进行数周)。
是的,我是新来的;)。我会以某种方式修复它。
摘要:
理想情况下,我要完成的工作是在一个类中创建并加载TreeMap。从一个或多个单独的/附加的/其他类访问同一TreeMap。
我现在所拥有的:丢失了初始加载的数据和地图。无法从其他类访问我的树图。
在此期间,我仍在尝试不同的想法,使用软件包等。
定义/初始化树形图:数据存储
import java.util.TreeMap;
public class DataStorage {
public static TreeMap<String, Integer> people = new TreeMap<String, Integer>();
}
并放置:PutDataStorage
import java.util.TreeMap;
public class PutDataStorage {
/**
* Run one time "put"
*/
public static void main(String[] args) {
DataStorage storage = new DataStorage();
TreeMap<String, Integer> people = storage.people;
people.put("bob", 2);
people.put("susan", 5);
System.out.println("PutData whole Entry " +people.entrySet());
System.out.println("PutData First Entry " +people.firstEntry());
System.out.println("PutData susan Value " +people.get("susan"));
}
}
获取树形图:GetDataStorage清除我以前的放置记录,因为我在那里有“新”记录。我从GetDataStorage中获得的唯一记录是单独的popeye = 3记录。我需要找到一种访问TMap的方法,而不必一遍又一遍地重新创建它。
import java.util.TreeMap;
public class GetDataStorage {
public static void main(String[] args) { //System.out.println("main");
DataStorage storage = new DataStorage();
TreeMap<String, Integer> people = storage.people;
// TreeMap<String, Integer> people = new TreeMap<String, Integer>();
people.get("bob");
people.get("susan");
people.put("popeye", 3);
System.out.println("GetData 1stEntry " +people.firstEntry());
System.out.println("GetData bobValue " +people.get("bob"));
System.out.println("GetData popValue " +people.get("popeye"));
System.out.println("GetData lowerKey " +people.lowerEntry("popeye"));
System.out.println("GetData highKey " +people.higherEntry("popeye"));
}
}
输出:来自Put
PutData whole Entry [bob=2, susan=5]
PutData First Entry bob=2
PutData susan Value 5
输出:从Get
GetData 1stEntry popeye=3
GetData bobValue null
GetData popValue 3
GetData lowerKey popeye=3
GetData hireKey popeye=3
预期的Get结果应为:
GetData 1stEntry bob=2
GetData bobValue 2
GetData popValue 3
GetData lowerKey bob=2
GetData highKey susan=5
预先感谢您。
答案 0 :(得分:0)
两个类都再次成为“静态”。
无论是否创建公共定义的打包原因,此方法都可以使用。我创建并测试了两者。如果需要,请在两个类中注释掉程序包名称。
请注意,我以不升序的顺序投入使用,以证明导航适用于TreeMap。
不要担心答案行的数量,因为大多数都是打印和注释。
PutDS类(创建并加载TreeMap及其记录)。
//package twowherewego;
import java.util.TreeMap;
public class PutDS { // Put DS(Data Storage)
public static TreeMap gettMapCashType(){ System.out.println("PutDS - entered " );
// Create TreeMap=tMapCashType and "put" two records to tMapCashType
TreeMap<String, String> tMapCashType = new TreeMap<String, String>();
tMapCashType.put("C", "Credit Card"); // out of order puts
tMapCashType.put("A", "All");
System.out.println("PutDS " + tMapCashType);
return tMapCashType;
}
}
先执行PutDS然后放入其他TreeMap记录的“主”类,然后使用TreeMap Navigation关键字获取许多记录:
//package twowherewego;
import java.util.TreeMap;
public class GetDS{ // Get DS(Data Storage)
public static void main(String[] args) {
System.out.println("Works with or without 'towherewego' package cause it is public");
System.out.println("** GetDS main: call PutDS and...");
// Execute PutDS with method=gettMapCashType()
TreeMap<String, String> people = PutDS.gettMapCashType(); //class=PutDS "." method
System.out.println("** back into GetDS main: after call to PutDS ");
// space or no space ='s no difference
people.put("D","popeye"); // notice this "put" has no space
people.put("B", "Bank Card"); // notice this "put" has a space after the ","
System.out.println("{{{ Navigational helpful keywords, etc }}}" );
System.out.println("GetData keySet " +people.keySet()); // key
System.out.println("GetData entrySet " +people.entrySet()); // key and value
System.out.println("GetData 1stEntry " +people.firstEntry()); // 1st entry/key
System.out.println("GetData B_BankCard " +people.get("B")); // get B value
System.out.println("GetData B_lowerKey " +people.lowerEntry("B")); // get B lower
System.out.println("GetData B_highrKey " +people.higherEntry("B")); // get B higher
System.out.println("GetData lastEntry " +people.lastEntry()); // last entry/key
System.out.println("** << End of GetDS >>");
}
}
使用其关键字生成/显示跟踪和导航记录。注意:放置顺序是按降序排列的,但是TreeMap(默认情况下)是按升序排列的(有关示例,请参见“ GetData keySet,... entrySet”)。
Works with or without 'towherewego' package cause it is public
** GetDS main: call PutDS and...
PutDS - entered
PutDS {A=All, C=Credit Card}
** back into GetDS main: after call to PutDS
{{{ Navigational helpful keywords, etc }}}
GetData keySet [A, B, C, D]
GetData entrySet [A=All, B=Bank Card, C=Credit Card, D=popeye]
GetData 1stEntry A=All
GetData B_BankCard Bank Card
GetData B_lowerKey A=All
GetData B_highrKey C=Credit Card
GetData lastEntry D=popeye
** << End of GetDS >>