【问题标题】:How to get rid of empty element of the array in Java?如何摆脱Java中数组的空元素?
【发布时间】:2011-12-01 13:03:45
【问题描述】:

假设我有一个数组如下:

  String[] letter = {a, b, c, e, f, }

如何修剪这个数组以去除空元素?

【问题讨论】:

  • 这个问题不是那个问题的重复。
  • @Erick Robertson 如果您阅读了该问题下方的 cmets,您会发现确实如此。
  • 初始化程序中的尾随逗号被忽略。见[这里][1][1]:stackoverflow.com/questions/3850203/…
  • -1 这个问题不清楚什么是空元素。在我看来,OP 认为由于尾随逗号而将 null 添加到数组的末尾。但这还不清楚,问题需要改进。

标签: java arrays string


【解决方案1】:

该数组中没有“空”元素。结尾的逗号没有区别 - 您的数组仍然有 5 个元素。

如果您在实际代码中遇到真正的问题,其中数组中的某些元素 为空(您必须说出您的意思 - 空值?值指的是空字符串?) 您不能更改现有数组的大小,但您可以创建一个 new 数组,例如与

List<String> list = new ArrayList<String>();
for (String text : array)
{
    if (text != null && text.length() > 0)
    {
        list.add(text);
    }
}
array = list.toArray(new String[0]);

【讨论】:

  • 请注意for(String text in array) 是伪代码。在java中使用for(String text:array)
  • @AmirRaminfar:嗯,这是无效代码——C# 的 foreach 和 Java 的增强 for 循环的混合体。现已修复。
【解决方案2】:

没有空元素。

Java 允许在代码中定义的数组的最后一个元素之后使用逗号。所以你的数组中没有空元素。

为了创建一个空(null)元素,您需要这样做:

String[] letter = {a, b, c, e, f, null};

注意:我的解释是 OP 认为尾随逗号是在数组末尾添加一个空元素。

【讨论】:

    【解决方案3】:

    您的数组中没有空元素。如果你像下面这样写,那么它也会包含 null 和空格。

    String[] letter = {"a", "b", "c", "e", "f", null, " h", " "};
    

    然后你必须像这样经历。

        for (int i = 0; i < letter.length; i++) {
            if (letter[i] != null && !letter[i].equals(" ")) {
                System.out.println("Letters::::::" + letter[i]);
            }
    
        }
        System.out.println("Length:::::" + letter.length);
    

    【讨论】:

      【解决方案4】:

      假设您确实有一个数组末尾有一个或多个 null 元素,您可以使用下面的代码找到第一个 null 元素的索引,然后创建该数组的副本,将其丢弃元素和它之后的任何东西。

      // sample array to be trimmed
      String[] array = {"1", "2", "3", null, null};
      
      int end = Arrays.asList(array).indexOf(null);
      if (end >= 0) {
          String[] tmp = new String[end];
          System.arraycopy(array, 0, tmp, 0, end);
          array = tmp;
      }
      

      【讨论】:

        【解决方案5】:

        您可以使用这个简单的代码 sn-p 从数组中删除空值和空字符串 导入 java.util.Arrays;

        public class Test {
           public static void main(String[] args) {
              String data = "1, 2, ,4 , , 5 ";
              String[] split = data.split(",");
              split = Arrays.stream(split).filter(s -> (s != null && s.length() > 0 && !s.trim().equals("")))
                    .toArray(String[]::new);
              for(String str:split){
                  System.out.println(str.trim());
              }
          }
        }`
        

        【讨论】:

          猜你喜欢
          • 2021-04-30
          • 2023-04-05
          • 1970-01-01
          • 2012-04-29
          • 2022-11-23
          • 1970-01-01
          • 1970-01-01
          • 2020-10-29
          • 1970-01-01
          相关资源
          最近更新 更多