翻译的JavaScript数组转换成阵列插入到Java

翻译的JavaScript数组转换成阵列插入到Java

问题描述:

我有这个在Javascript:翻译的JavaScript数组转换成阵列插入到Java

var population = []; 
for(i=0; i < size; i++){ 
    population[i] = functionWhichReturnsArrays(); 
} 

包含不同指数的多个阵列的一维阵列 - 这就是我要的,而不是一个二维数组。

如何将其转换为Java?

+1

你不(用数组)。 Javascript有动态数组。 Java没有。 –

+0

在Java中执行此操作的另一种方法是什么? –

+1

'Object [] population = new Object [size];'创建数组,然后'for'循环类似于JS的来填充它。 –

这让您对如何处理它的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()); 
} 
+0

我相信'TYPE_RETURNED_FROM_FUNTION'必须是一个数组/列表,所以你可以在这里更具体。 –