我在java中使用hashable是非常新的,所以我在Java中的一个类中设置值并获得相同类的值但是无法获得另一个类,为什么?我不知道这个?
我的数据实际上,就像这样:
<rule code="53" value="QN_775_0=QN_775_0>50" /> <rule code="55" value="QN_775_2=QN_775_2<3" />
我想将密钥 53 和其他密钥设为 QN_775_0&gt; 50 。值是在逻辑运算符之后。
将数据放在同一个类中:
Logic lg= new Logic();
//like this value
String logicCode="53";
String logicCode="QN_775_0>50";
lg.add(logicCode, logicCode);
Enumeration<String> enumer = Logic.logicnew.keys();
while (enumer.hasMoreElements()) {
String keyFromTable = (String) enumer.nextElement();
System.out.println("1111111CODE="+keyFromTable + "VALUE = " + Logic.logicnew.get(keyFromTable));
}
我的模特课程:
public class Logic {
public static Hashtable<String,String> logicnew;
public Logic(){
logicnew=new Hashtable<String,String>();
}
public void add(String a, String b){
logicnew.put(a,b);
}
public String get(String key){
return logicnew.get(key);
}
public int getSize(){
return logicnew.size();
}
public Hashtable<String, String> getLogic(){
return logicnew;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder("\n");
Set set = logicnew.entrySet();
Iterator it = set.iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
sb.append("\t"+entry.getKey() + " : " + entry.getValue()+"\n");
}
return sb.toString();
}
}
但在接下来的活动中,我这样做却无法获得价值。
Enumeration<String> enumer = Logic.logicnew.keys();
while (enumer.hasMoreElements()) {
String keyFromTable = (String) enumer.nextElement();
System.out.println("1111111CODE="+keyFromTable + "VALUE = " + Logic.logicnew.get(keyFromTable));
}
此处 enumer.hasMoreElements()返回 false 值。为什么这个?
答案 0 :(得分:0)
当您的活动被杀死时,将重新初始化静态HashTable。只需在构造函数中添加日志:
public Logic(){
Log.d("App", "Inside Logic() Constructor ---");
logicnew=new Hashtable<String,String>();
}
如果您多次看到日志,则表明已重新初始化HashTable。因此,返回enumer.hasMoreElements()
的代码false
是预期的行为,因为重新初始化后HashTable中没有元素。
有关如何在 Android 中存储和检索数据的明确提示,请参阅Data Storage in Android。