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



我有一个字符串数据列表,这些数据在程序中的任何操作过程中都不会更改。但我需要使用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
        }
    }
}

最新更新