Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中组合两个对象数组_Java_Arrays_Testng - Fatal编程技术网

如何在Java中组合两个对象数组

如何在Java中组合两个对象数组,java,arrays,testng,Java,Arrays,Testng,我有一个从excel文件获取信息的小脚本。在我收集了所需的信息之后,我想将这两个数组合并成一个数组。可能吗 public Object[][] createData1() throws Exception { Object[][] retObjArr1 = data.getTableArray("C:\\Users\\OAH\\Workspaces\\Chrome2\\Testdata2.xls", "Sheet1", "normalCustomer"); Object[][]

我有一个从excel文件获取信息的小脚本。在我收集了所需的信息之后,我想将这两个数组合并成一个数组。可能吗

public Object[][] createData1() throws Exception {
    Object[][] retObjArr1 = data.getTableArray("C:\\Users\\OAH\\Workspaces\\Chrome2\\Testdata2.xls", "Sheet1", "normalCustomer");
    Object[][] retObjArr2 = data.getTableArray("C:\\Users\\OAH\\Workspaces\\Chrome2\\Testdata2.xls", "Sheet2", "langLogin");
    return(retObjArrCombined); //I want to return one array with both arrays
}

您可以使用
System.arraycopy
方法(是,全部小写)。您可以使用
java.util.arrays
类对数组做更多的工作。

这个怎么样

另一种方式:

Object[][] one = {{1, 2, 3}, {4, 5}, {6}};
Object[][] two = {{7, 8}, {9}};
List<Object[]> holder = new ArrayList<>();

Collections.addAll(holder, one);
Collections.addAll(holder, two);

Object[][] result = holder.toArray(new Object[holder.size()][]);
Object[]one={{1,2,3},{4,5},{6};
Object[]two={{7,8},{9};
列表持有者=新的ArrayList();
集合。添加所有(持有人,一人);
集合。addAll(持有人,两人);
Object[]result=holder.toArray(新对象[holder.size()][]);

以下代码完成了您的任务:

Object[][] retObjArr1 = { { "a00", "a01" }, { "a10", "a11" },
        { "a20", "a21" } };
Object[][] retObjArr2 = { { "b00", "b01" }, { "b10", "b11" },
        { "b20", "b21" } };

List<Object[][]> list = new ArrayList<Object[][]>();
list.add(retObjArr1);
list.add(retObjArr2);

int totalRow = 0;
for (int all = 0; all < list.size(); all++) {
    totalRow += list.get(all).length;
}
Object[][] retObjArrCombined = new Object[totalRow][];
int rowCount = 0;
for (int all = 0; all < list.size(); all++) {
    Object[][] objects = list.get(all);
    for (int i = 0; i < objects.length; i++) {
        retObjArrCombined[rowCount] = objects[i];
        rowCount++;
    }
}
for (int i = 0; i < retObjArrCombined.length; i++) {
    for (int j = 0; j < retObjArrCombined[i].length; j++) {
        System.out.println("value at :(" + i + "," + j + ") is:"
                + retObjArrCombined[i][j]);
    }
}

以下是简单的解决方案:

private static Object[] concatenate(Object[] a, Object[] b) {
    Collection<Object> result = new ArrayList<Object>(a.length + b.length);
    for (Object val : a) {
        result.add(val);
    }
    for (Object val : b) {
        result.add(val);            
    }
    return result.toArray();
} 
私有静态对象[]连接(对象[]a,对象[]b){
收集结果=新的ArrayList(a.length+b.length);
用于(对象val:a){
结果:添加(val);
}
用于(对象val:b){
结果:添加(val);
}
返回result.toArray();
} 
一个带有无计算上拉的流的衬里
是的,它会慢几毫秒


Object[]]combi=Stream.concat(Arrays.Stream(retObjArr1)、Arrays.Stream(retObjArr2)).toArray(Object[]]::new)

你允许数组的并集中有重复的元素吗?请看这个问题:除非之前没有人考虑过合并两个数组,否则我确信谷歌
java合并数组
会给你你想要的答案。
value at :(0,0) is:a00
value at :(0,1) is:a01
value at :(1,0) is:a10
value at :(1,1) is:a11
value at :(2,0) is:a20
value at :(2,1) is:a21
value at :(3,0) is:b00
value at :(3,1) is:b01
value at :(4,0) is:b10
value at :(4,1) is:b11
value at :(5,0) is:b20
value at :(5,1) is:b21
private static Object[] concatenate(Object[] a, Object[] b) {
    Collection<Object> result = new ArrayList<Object>(a.length + b.length);
    for (Object val : a) {
        result.add(val);
    }
    for (Object val : b) {
        result.add(val);            
    }
    return result.toArray();
}