Java 排列数字,但输出变量名

Java 排列数字,但输出变量名,java,arrays,arraylist,Java,Arrays,Arraylist,我有几个变量,希望将变量按降序排列在数组或arraylist中。问题是一旦安排好了,我想打印出变量名,所以我想要一个数组/数组列表,可以输出:three3,eight8,four4,five5,six6,seven7,而不是32,29,25,19,11。我该如何解决这个问题 double three3 = 32; double four4 = 25; double five5 = 19; double six6 = 11; double seven7 = 11; double eight8 =

我有几个变量,希望将变量按降序排列在数组或arraylist中。问题是一旦安排好了,我想打印出变量名,所以我想要一个数组/数组列表,可以输出:three3,eight8,four4,five5,six6,seven7,而不是32,29,25,19,11。我该如何解决这个问题

double three3 = 32;
double four4 = 25;
double five5 = 19;
double six6 = 11;
double seven7 = 11;
double eight8 = 29;

谢谢

您应该使用
地图
来解决这个问题。
LinkedHashMap
保留其键的顺序,以便您可以对其进行迭代。如果需要自动排序,可以将
TreeMap
比较器一起使用

Map<String, Double> variables = new LinkedHashMap<>();
variables.put("three3", 32d);
variables.put("four4", 25d);
// ...

// variable names:
for(String key : variables.keySet()) {
    System.out.println(key + "=" + variables.get(key));
}
Map variables=newlinkedhashmap();
变量。放置(“三个3”,32d);
变量。put(“four4”,25d);
// ...
//变量名:
for(字符串键:variables.keySet()){
System.out.println(key+“=”+variables.get(key));
}

像这样使用
HashMap

Map<Integer, ArrayList<String>> mMap = new HashMap<Integer, ArrayList<String>>();


mMap.put(32,new ArrayList<String>());
mMap.get(32).add("three3");
mMap.get(32).add("four4");
mMap.get(32).add("five5");

mMap.put(25,new ArrayList<String>());
mMap.get(25).add("six6");
mMap.get(25).add("seven7");
mMap.get(25).add("eight8");

mMap.put(29,new ArrayList<String>());
mMap.get(29).add("eight8");


List<Integer> list= new ArrayList<Integer>(mMap.keySet());

Collections.sort(list);

for (Iterator iterator = list.iterator(); iterator.hasNext();) {

    System.out.println(mMap.get(iterator.next()).toString());

}
Map mMap=newhashmap();
mMap.put(32,新的ArrayList());
mMap.get(32).添加(“三个3”);
mMap.get(32).添加(“四个”);
mMap.get(32).添加(“五”);
mMap.put(25,新的ArrayList());
mMap.get(25)。添加(“六条”);
mMap.get(25)。添加(“七分之七”);
mMap.get(25)。添加(“八”);
mMap.put(29,新ArrayList());
mMap.get(29)。添加(“八”);
List=newarraylist(mMap.keySet());
集合。排序(列表);
for(Iterator Iterator=list.Iterator();Iterator.hasNext();){
System.out.println(mMap.get(iterator.next()).toString());
}
编辑:
现在,当变量数相同时,它就可以工作。

除非使用反射,否则不能。我可以告诉你为什么要这样做吗?我会给你关键词:集合对键值java,如果你想提高你的自我,搜索而不阅读答案沙拉夫:那么他仍然只会打印变量,而不是变量名。阅读我之前写的,我说键、值、变量名将是你提供的方法的关键,问题是,如果两个变量等于同一个数字,例如three3=10和four4=10,它将只打印其中一个变量。有没有办法打印出所有变量,即使两个变量的值相同?@user3706672现在打印出所有变量。