通过“串联” root变量名称 +int

问题描述 投票:0回答:2
在这里总共爪哇新秀,想知道我是否有任何方法可以迭代几个阵列:

myArray1 myArray2 myArray3
通过执行某种形式的“串联”来调用这些阵列for循环?
例如(一些伪代码):

HashMap<Integer, ArrayList<String>> map; int key = 1; while (key <= 10) { map.put(key, new ArrayList<>()); for (String item : myArray+key) { // So the array being iterated over would be // myArray1 if key = 1, myArray2 if key = 2, etc map.get(key).add(myArray+key); } }
,如果解释很糟糕,但是我对Java的条款不太胜任,而且我很难为此找到答案,如果有任何问题!
    

java arrays variables arraylist
2个回答
2
投票
如果可以的话,我认为您应该通过没有10个阵列来避开问题。无论如何,这些名字并没有说什么。而不是:

myArray1

这样可以直接构造您的地图
myArray10
方法是在Java 9(很久以前)引入的。
我放松了您的类型。我使用

String[] myArray1 = { "foo", "bar" }; String[] myArray2 = { "bar", "baz" }; // more arrays
而不是
Map<Integer, List<String>> map = Map.ofEntries( Map.entry(1, List.of("foo", "bar")), Map.entry(1, List.of("bar", "baz")) // more entries );

Map.ofEntries
而不是
List.of

。 这是司空见惯的,对于大多数目的而言,这不是问题。一个警告是我构建的地图和列表不可修改。如果您确实需要确切的类型

Map
和/或需要修改地图并稍后列出,请适当包装地图,并适当地包装地图。它变得越来越言语,很难阅读:
HashMap

您可以动态构建一个变量名称吗?

对于您的问题,这不是我第一次见到年轻的程序员(例如,经验不到一年)表明您可以将一个数字从一个变量(例如
List
)附加到一个变量名称,例如
ArrayList
为了访问带有该名称和号码的变量,例如,如果是1。在大多数编程语言中,则不可能。这就是您的阵列。因此,您应该在您的情况下使用
HashMap<Integer, ArrayList<string>>
    HashMap<Integer, ArrayList<String>> map
            = new HashMap<>(Map.ofEntries(
                    Map.entry(1, new ArrayList<>(List.of("foo", "bar"))),
                    Map.entry(1, new ArrayList<>(List.of("bar", "baz")))
                    // more entries
    ));

key
在Java中,它可以通过您通过称为
反射

动态构建的变量名称访问某些变量。但这仍然不可行。对于像您这样的相对简单的任务,这太复杂了。 您可以在以下相关问题的答案中阅读更多信息:

分配Java

中具有动态名称的变量(还有更多类似的问题,只需搜索)。


我不知道您的问题是您的MyArrayn对象是否在记忆中“松散”,您必须在循环中收集它们,或者它们是否已经以某种方式组织到一个对象中。
现在,我假设您有某种形式的myarrayn,因此可以通过索引访问项目。示例中的数组是真实数组吗?说
myArray
或它们是以java藏品的形式给出的,例如?
myArray1
    
有三种实现您目标的方法,一种在评论中推荐的方法(在99.9%的案件中使用),另一个“复杂”两个方法。

对于第一个开始,我们从其中包含我们

arrays的类的场景开始,因为您可能是以下一个: key

这是我们要制作“咒语”的班级:

myArrays[key]

尽管这不是每天都会使用的东西,但知道语言给我们的工具总是很好。

0
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.