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的条款不太胜任,而且我很难为此找到答案,如果有任何问题!
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中,它可以通过您通过称为反射
中具有动态名称的变量(还有更多类似的问题,只需搜索)。
我不知道您的问题是您的MyArrayn对象是否在记忆中“松散”,您必须在循环中收集它们,或者它们是否已经以某种方式组织到一个对象中。现在,我假设您有某种形式的myarrayn,因此可以通过索引访问项目。示例中的数组是真实数组吗?说
myArray
或它们是以java藏品的形式给出的,例如??
myArray1
有三种实现您目标的方法,一种在评论中推荐的方法(在99.9%的案件中使用),另一个“复杂”两个方法。 对于第一个开始,我们从其中包含我们
arrays的类的场景开始,因为您可能是以下一个:
key