翻译的JavaScript数组转换成阵列插入到Java
我有这个在Javascript:翻译的JavaScript数组转换成阵列插入到Java
var population = [];
for(i=0; i < size; i++){
population[i] = functionWhichReturnsArrays();
}
包含不同指数的多个阵列的一维阵列 - 这就是我要的,而不是一个二维数组。
如何将其转换为Java?
这让您对如何处理它的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/
TL;博士
使用ArrayList。
回答
Java提供了大量的数据结构以供选择,内置的Collections
。 决定使用哪一个高度依赖于特定用例的性质。 通常它是灵活性和性能之间的折衷。
从稀疏描述你提供我假设你 要求的数据结构都或多或少以下
- 不知道或关心的元素
- 的数据结构的数保持元件
- ,需要由索引
访问元素的顺序而后者两者由Java一个fullfilled由于数组具有固定的大小,所以第一个不是。 除非有更具体的要求,我建议使用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
// 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());
}
我相信'TYPE_RETURNED_FROM_FUNTION'必须是一个数组/列表,所以你可以在这里更具体。 –
你不(用数组)。 Javascript有动态数组。 Java没有。 –
在Java中执行此操作的另一种方法是什么? –
'Object [] population = new Object [size];'创建数组,然后'for'循环类似于JS的来填充它。 –