如何将两个java数组合并为一个

时间:2014-03-20 05:11:38

标签: java arrays

这是我到目前为止所拥有的

int[] startInts = Arrays.copyOfRange(myInts, count+1, myInts.length); // first half of array
int[] endInts = Arrays.copyOfRange(myInts, count+1, myInts.length); // other half of array

int[] newInts = new int[startInts.length + endInts.length];
System.arraycopy(startInts, 0, newInts, 0, startInts.length);
System.arraycopy(endInts, 0, newInts, startInts.length, endInts.length);

myInts = newInts;

但这一切都给了我一个数字。

它并没有真正将两个数组合并为一个数组。任何帮助如何做到这一点。

解决方案

int[] startInts = Arrays.copyOfRange(myInts, myInts[0], index); // first half of array
        int[] endInts = Arrays.copyOfRange(myInts, count+1, myInts.length); // other half of array

        System.out.println(Arrays.toString(startInts));
        System.out.println(Arrays.toString(endInts));

        int[] newInts = new int[startInts.length + endInts.length];
        System.arraycopy(startInts, 0, newInts, 0, startInts.length);
        System.arraycopy(endInts, 0, newInts, startInts.length, endInts.length);

4 个答案:

答案 0 :(得分:1)

班级系统

方法

arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
  

从指定的源数组复制数组,从   指定的位置,到目的地的指定位置   阵列。

查看所有功能集javadoc


修改

int[] startInts = Arrays.copyOfRange(myInts, count+1, myInts.length); // first half of array
int[] endInts = Arrays.copyOfRange(myInts, count+1, myInts.length); // other half of array

你在这里遇到的可能问题是startIntsendInts是相同的,所以它不是上半场和下半场,只是上半场和上半场。

答案 1 :(得分:0)

您应该使用:

String[] both = ArrayUtils.addAll(first, second);

当ArrayUtils是来自Apache Commons Lang库的类

答案 2 :(得分:0)

为什么不使用ArrayList的

ArrayList<String> a = new ArrayList<String>();
ArrayList<String> b = new ArrayList<String>();

a.add("a1");
a.add("a2");

b.add("b1");
b.add("b2");

ArrayList<String> c = new ArrayList<String>();
c.addAll(a);
c.addAll(b);

System.out.println(c.toString());

当然,如果你想从真正的arrays开始,那么你可以使用ArrayList将其转换为Arrays.asList(array)

答案 3 :(得分:-1)

String[] both = (String[]) ArrayUtils.addAll(first, second);

static String[] concat(String[] a, String[] b) {
   String[] c= new String[a.length+b.length];
   System.arraycopy(a, 0, c, 0, a.length);
   System.arraycopy(b, 0, c, a.length, b.length);
   return c;
}