繁体   English   中英

不要从数组转换“空”值

[英]Don't convert "null" values from Arrays

我有 3 个通用数组,它们的大小都预先确定为 25。例如,如果数组中只有 5 个实际值,它将显示这 5 个,而不是接下来的 20 个为空。 我不想显示任何空值。 我是否在 toString 中编辑了一些东西? 我的 toString 是

public String toString(){
  return Arrays.toString(container);
}

容器是从构造函数创建的数组对象。 这是我的输出的样子..

输出图片

在下文中,我假设您的容器类似于Something []container

使用StringBuilder的 Java 8 之前:

public String toString(){
    StringBuilder s = new StringBuilder();
    for (Something i : container) if (i!=null) s.append(i.toString()+",");
    return s.toString();
}

使用流的后 java 8:

public String toString(){
    return Arrays.stream(container)
                 .filter(Objects::nonNull)
                 .map(Object::toString)
                 .collect(Collectors.joining(","));
}

Arrays.toString()方法都生成整个数组的表示。 如果这不是您想要的,那么您需要选择不同的方法。 例如,您可能会执行以下操作:

String result = Arrays.stream(container)
        .filter(Objects::nonNull)
        .map(Objects::toString)
        .collect(Collectors.joining(",", "[", "]"));

假设您使用 java8 或更高版本:

Arrays.toString(Arrays.stream(container).filter(i->i!=null).collect(Collectors.toList()));

java8流的另一个解决方案:

MyType[] array = Arrays.stream(originalArray)
                       .filter(Objects::nonNull)
                       .toArray(MyType[]::new);
    
System.out.println(Arrays.toString(array));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM