我有我的程序中任何操作期间未更改的字符串数据列表。但我需要使用密钥在几个地方访问这些数据。
作为一个例子:(1,ANN)(2,ALEX)(3,ANDROW)
有没有办法将这些数据存储在单独的类中。我可以使用java enum。谢谢
答案 0 :(得分:2)
使用 enum ,您可以实现以下内容:
public enum Name {
ONE {
@Override
public String getName() {
return "ANN";
}
},
TWO {
@Override
public String getName() {
return "ALEX";
}
},
THREE {
@Override
public String getName() {
return "ANDROW";
}
};
public abstract String getName();
}
然后你可以得到名字:
System.out.println(Name.ONE.getName());
答案 1 :(得分:1)
这确实是使用Map的好选择。您可以将数字用作键,将字符串作为值。
https://docs.oracle.com/javase/tutorial/collections/interfaces/map.html
Map<Integer, String> map = new HashMap<Integer,String>();
答案 2 :(得分:1)
Map<Integer,String>
是一个选项,如果key也是常量,你可以定义字符串变量,如
public static final string ONE = "ANN";
public static final string TWO = "ALEX";
答案 3 :(得分:1)
使用枚举定义静态映射的另一种方法:
public enum Names {
ONE("ANN"),
TWO("ALEX"),
THREE("ANDREW");
private final String name;
private Names(String name){
this.name=name;
}
public String getName() {
return this.name;
}
}
这仅适用于实际静态值(更改为值表示代码更改),但您也可以轻松定义多个属性。
答案 4 :(得分:0)
您可以执行以下操作:
import java.util.HashMap;
public class Main {
static HashMap<Integer,String>data = new HashMap<>();
public static void main(String[] args) {
// write your code here
data.put(data.size(),"ALEX"); // if you want 1-based indexing,
data.put(data.size(),"ANDROW"); // then use data.size()+1
data.put(data.size(),"ANN"); // instead of data.size()
for (int i = 0; i<data.size(); i++){
System.out.println(i+" : "+data.get(i)); // use i+1 if 1-based indexing
}
}
}