我在Javascript中有这个:
var population = [];
for(i=0; i < size; i++){
population[i] = functionWhichReturnsArrays();
}
包含不同索引中的多个数组的单维数组 - 这是我想要的而不是2D数组。
如何将其转换为Java?
答案 0 :(得分:1)
这让您了解如何在Java中处理它(代码可以编写得更好,但这很容易理解):
public class Pop {
public static void main(String[] args) {
new Pop().build(10);
}
private void build(int size) {
String[][] population = new String[size][];
for (int i = 0; i < size; i++) {
population[i] = functionWhichReturnsArrays();
}
for (int a = 0; a < population.length; a++) {
for (int b = 0; b < population[a].length; b++) {
System.out.print(population[a][b] + " / ");
}
System.out.println();
}
}
private String[] functionWhichReturnsArrays() {
String[] strs = new String[2];
strs[0] = "zero";
strs[1] = "one";
return strs;
}
}
结果将是10行:
zero / one /
zero / one /
...
zero / one /
答案 1 :(得分:0)
<强> TL;博士强>
使用ArrayList。
<强>答案强>
Java提供了大量可供选择的数据结构,内置Collections
。
决定使用哪一个高度依赖于特定用例的性质。
通常它是灵活性和性能之间的权衡。
从您提供的稀疏描述中我假设您的 对数据结构的要求或多或少如下
虽然后两者是由Java数组填充的,但第一个不是因为数组具有固定的大小。
除非有更具体的要求,否则我建议使用ArrayList
。
作为一个例子,我在somethingThatReturnsAList()
中创建随机数和随机长度的列表。
因为你可以在这里使用除Numbers之外的其他值类型。
此外,应该可以为每个列表条目使用完全不同的值类型。
您要求的列表列表是在最后的main
方法中创建的。
printThat()
只打印列表中每个索引的数字列表的内容
在StringBuilder的帮助下列表。
import java.util.ArrayList;
import java.util.List;
public class ListTest {
public static List<Number> somethingThatReturnsAList() {
int count;
int value;
List<Number> result;
// Random number of elements.
count = (int) (Math.random() * 10);
result = new ArrayList<Number>(count);
for (int i = 0; i < count; ++i) {
// Random value.
value = (int) (Math.random() * 10);
result.add(value);
}
return result;
}
public static void printThat(List<List<Number>> listOfLists) {
StringBuilder bldr;
List<Number> subList;
bldr = new StringBuilder();
bldr.append("The contents:\n");
for (int i = 0; i < listOfLists.size(); ++i) {
// Top list index.
bldr.append(i).append(": ");
subList = listOfLists.get(i);
// List sub list values.
for (int j = 0; j < subList.size(); ++j) {
if (j > 0) {
bldr.append(", ");
}
bldr.append(subList.get(j));
}
System.out.println(bldr.toString());
bldr.setLength(0);
}
}
public static void main(String[] args) {
int size;
List subList;
List<List<Integer>> listOfLists;
size = 5;
// Create that list of lists
listOfLists = new ArrayList<List<Integer>>(5);
for (int i = 0; i < size; ++i) {
subList = somethingThatReturnsAList();
listOfLists.add(subList);
}
// Print that list of lists
printThat(listOfLists);
}
}
这打印如下:
The contents:
0: 5, 1, 2
1:
2: 4, 2, 9, 3, 0, 7, 6
3: 0, 1, 5, 7, 6, 5, 1, 4, 5
4: 7
答案 2 :(得分:0)
// var population = [];
ArrayList<TYPE_RETURNED_FROM_FUNTION> population = new ArrayList<>();
for (int i = 0; i < size; i++) {
// adds at the end of the array Liste; wich is i
population.add(functionWhichReturnsArrays());
}