Java 在单独的位置定义静态数据以重用

Java 在单独的位置定义静态数据以重用,java,enums,Java,Enums,我有一个字符串数据列表,这些数据在我的程序中的任何操作期间都不会更改。但我需要使用key在多个地方访问这些数据。 例如:(1,安)(2,亚历克斯)(3,安卓) 是否有任何方法将这些数据存储在单独的类中。我可以使用java枚举进行此操作。谢谢这确实是使用Map的一个很好的候选者。您可以将数字用作键,将字符串用作值 Map Map=newhashmap(); 您可以执行以下操作: import java.util.HashMap; public class Main { static H

我有一个字符串数据列表,这些数据在我的程序中的任何操作期间都不会更改。但我需要使用key在多个地方访问这些数据。

例如:(1,安)(2,亚历克斯)(3,安卓)


是否有任何方法将这些数据存储在单独的类中。我可以使用java枚举进行此操作。谢谢

这确实是使用Map的一个很好的候选者。您可以将数字用作键,将字符串用作值

Map Map=newhashmap();

您可以执行以下操作:

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
        }

    }
}
import java.util.HashMap;
公共班机{
静态HashMapdata=newHashMap();
公共静态void main(字符串[]args){
//在这里编写代码
data.put(data.size(),“ALEX”);//如果需要基于1的索引,
data.put(data.size(),“ANDROW”);//然后使用data.size()+1
data.put(data.size(),“ANN”);//而不是data.size()
for(inti=0;i
Map
是一个选项,如果key也是常量,您可以定义如下字符串变量

public static final string ONE = "ANN";
public static final string TWO = "ALEX";

使用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());

使用枚举定义静态映射的另一种方法:

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;
}
}

这只适用于真实的静态值(对值的更改意味着代码更改),但您也可以轻松定义多个属性。

也许是静态映射?HashMap有什么问题?
?IMHO,更好的样式是为该枚举定义构造函数-public Name(String Name){This.Name=Name;};然后您可以简单地定义一个(“ANN”)、两个(“ALEX”),如果您这样实现,您将如何获得输出?
System.out.println(Name.ONE);
?您需要在enum类中定义一个(静态最终字段)…我将给出一个samplename作为enum中的默认字段。
ONE.Name()
返回“ONE”所以在枚举中使用不同的变量nmae。
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;
}
}