Java 如何重新排列数组,使空值占据数组的开头?

Java 如何重新排列数组,使空值占据数组的开头?,java,arrays,string,Java,Arrays,String,我不知道如何将null元素添加到数组的前面 有没有办法在不反转阵列的情况下执行此操作?也许是一种具体的方法 public static void main(String[] args) { String[] stringArray = new String[]{"one", "two", "three"}; method(stringArray); } public static String[] method(String[] stringArray) { Strin

我不知道如何将null元素添加到数组的前面

有没有办法在不反转阵列的情况下执行此操作?也许是一种具体的方法

public static void main(String[] args) {
    String[] stringArray = new String[]{"one", "two", "three"};
    method(stringArray);
}

public static String[] method(String[] stringArray) {
    String[] biggerStringArray = Arrays.copyOf(stringArray, stringArray.length * 2);

    for (int i = 0; i < biggerStringArray.length; i++) {
        System.out.print(biggerStringArray[i] + ", ");

    }

    return biggerStringArray;
}
publicstaticvoidmain(字符串[]args){
String[]stringArray=新字符串[]{“一”、“二”、“三”};
方法(字符串数组);
}
公共静态字符串[]方法(字符串[]字符串数组){
String[]biggerStringArray=Arrays.copyOf(stringArray,stringArray.length*2);
for(int i=0;i
我希望结果如下所示:

零,零,零,一,二,三

而不是:

一,二,三,零,零,零


据我所知,一个单一的声明,你所寻找的并不存在。但这并不意味着你不能自己做。有很多方法可以交换数组中的元素。这里有一个:

String[] biggerStringArray = Arrays.copyOf(stringArray, stringArray.length * 2);
for(int i = 0; i < stringArray.length; i++)
{
    biggerStringArray[i] = biggerStringArray[i + stringArray.length];
    biggerStringArray[i + stringArray.length] = null;
}
String[]biggerStringArray=Arrays.copyOf(stringArray,stringArray.length*2);
对于(int i=0;i
您可以编写自己的
copy
方法,如下所示

    public static String[] copyArray(String[] array, int length) {
        String[] biggerStringArray = new String[length];
        for (int i = 1; i <= array.length; i++) {
            biggerStringArray[biggerStringArray.length - i] = array[array.length - i];
        }
        return biggerStringArray;
    }
公共静态字符串[]copyArray(字符串[]数组,整数长度){
String[]biggerStringArray=新字符串[长度];

对于(int i=1;i您可以首先创建一个长度等于
stringArray
的空数组。然后您可以使用任何Java数组连接方法将
stringArray
连接到新的空数组

这里有一个例子

public static String[] method(String[] stringArray) {
    String[] nullArray = new String[stringArray.length];
    String[] biggerStringArray = Stream.of(nullArray, stringArray).flatMap(Stream::of).toArray(String[]::new);

    // for (int i = 0; i < biggerStringArray.length; i++) {
    //     System.out.print(biggerStringArray[i] + ", ");
    // }

    return biggerStringArray;
}
公共静态字符串[]方法(字符串[]字符串数组){
String[]nullArray=新字符串[stringArray.length];
String[]biggerStringArray=Stream.of(nullArray,stringArray).flatMap(Stream::of).toArray(String[]::new);
//for(int i=0;i
公共静态void main(字符串[]args){
String[]stringArray=新字符串[]{“一”、“二”、“三”};
方法(字符串数组);
}
公共静态字符串[]方法(字符串[]字符串数组){
String[]biggerStringArray=新字符串[stringArray.length*2];
对于(int i=0;i
编辑:刚刚记住,您还可以使用:

公共静态字符串[]方法(字符串[]字符串数组){
String[]biggerStringArray=新字符串[stringArray.length*2];
System.arraycopy(stringArray,0,biggerStringArray,biggerStringArray.length/2,stringArray.length);
for(int i=0;i
公共静态字符串[]方法(字符串[]字符串数组){
String[]biggerStringArray=Arrays.copyOf(stringArray,stringArray.length*2);
List biggerStringList=Arrays.asList(biggerStringArray);
sort(Comparator.nullsFirst(String::compareTo));
System.out.println(biggerStringList);
返回biggerStringList.toArray(新字符串[biggerStringList.size()]);
}
public static void main(String[] args) {
    String[] stringArray = new String[] {"one", "two", "three"};
    method(stringArray);
  }

  public static String[] method(String[] stringArray) {
    String[] biggerStringArray = new String[stringArray.length * 2];

    for (int i = 0; i < stringArray.length; i++) {
      biggerStringArray[i + biggerStringArray.length / 2] = stringArray[i];
    }

    for (int i = 0; i < biggerStringArray.length; i++) {
      System.out.print(biggerStringArray[i] + ", ");
    }
    return biggerStringArray;
  }
public static String[] method(String[] stringArray) {
    String[] biggerStringArray = new String[stringArray.length * 2];

    System.arraycopy(stringArray, 0, biggerStringArray, biggerStringArray.length / 2, stringArray.length);

    for (int i = 0; i < biggerStringArray.length; i++) {
      System.out.print(biggerStringArray[i] + ", ");
    }
    return biggerStringArray;
  }
public static String[] method(String[]stringArray) {
    String[] biggerStringArray = Arrays.copyOf(stringArray, stringArray.length * 2);

    List<String> biggerStringList = Arrays.asList(biggerStringArray);
    biggerStringList.sort(Comparator.nullsFirst(String::compareTo));

    System.out.println(biggerStringList);

    return biggerStringList.toArray(new String[biggerStringList.size()]);
}