为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕容708150 2023-08-04 19:01:36
我不确定如何将空元素添加到数组的前面。有没有办法在不反转数组的情况下做到这一点?或许有具体的方法?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;}我希望结果看起来像:空,空,空,一,二,三,代替 :一、二、三、空、空、空
查看完整描述

4 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

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;

  }


查看完整回答
反对 回复 2023-08-04
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

您可以首先创建一个长度等于stringArray. 然后,您可以stringArray使用任何 Java 数组连接方法将 与新的空数组连接起来。


这是一个例子


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;

}


查看完整回答
反对 回复 2023-08-04
?
临摹微笑

TA贡献1982条经验 获得超2个赞

据我所知,不存在执行您正在寻找的操作的单个语句。但这并不意味着您不能自己做。有很多方法可以交换数组中的元素。这是一个:


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;

}


查看完整回答
反对 回复 2023-08-04
?
ITMISS

TA贡献1871条经验 获得超8个赞

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()]);

}


查看完整回答
反对 回复 2023-08-04
  • 4 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信