我有一个字符串数据列表,这些数据在程序中的任何操作过程中都不会更改。但我需要使用key在几个地方访问这些数据
例如:(1,ANN)(2,ALEX)(3,ANDROW)
有没有办法将这些数据存储在单独的类中。我可以使用java枚举吗。感谢
使用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());
这确实是使用Map的一个很好的候选者。您可以将数字用作键,将字符串用作值。
https://docs.oracle.com/javase/tutorial/collections/interfaces/map.html
Map<Integer, String> map = new HashMap<Integer,String>();
Map<Integer,String>
是一个选项,如果键也是常量,则可以定义字符串变量,如
public static final string ONE = "ANN";
public static final string TWO = "ALEX";
使用枚举定义静态映射的另一种方法:
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;
}
}
这只适用于实际的静态值(值的更改意味着代码的更改),但您也可以轻松地定义多个属性。
您可以执行以下操作:
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
}
}
}