有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我不知道如何将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;
}

我希望结果如下所示:

null, null, null, one, two, three,

而不是:

one, two, three, null, null, null


共 (5) 个答案

  1. # 1 楼答案

    首先可以创建一个长度等于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;
    }
    
  2. # 2 楼答案

    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;
      }
    

    编辑:刚刚记住你也可以使用System.arraycopy

    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;
      }
    
  3. # 3 楼答案

    据我所知,一个能满足你所需的语句是不存在的。但这并不意味着你不能自己做。有很多方法可以交换数组中的元素。这里有一个:

    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;
    }
    
  4. # 4 楼答案

    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()]);
    }
    
  5. # 5 楼答案

    您可以编写自己的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;
        }