将自定义列表转换​​为字符串/数组

问题描述

我有一个 CustomList,它可以根据需要执行所有操作,直到我遇到 String.join(" ",list)list.toArray(String[]::new) 之类的代码不适用于我的 CustomList 但适用于 ArrayList。我做错了什么?

CustomList 成对添加删除每个元素。

class CustomList implements List<String> {

    private List<String> list;

    public CustomList() {
        list = new ArrayList<String>();
    }

//implemented overridden methods
}

String.join(" ",list) 抛出 NullPointerException。 list.toArray(String[]::new) 返回 null。

    public <T> T[] toArray(T[] a) {
        list.toArray(a);
        return a;
    }

    public Iterator<String> iterator() {
        return list.iterator();
    }

解决方法

list.toArray(String[]::new) 不适合我编译。 也许,你使用类的方式是错误的。

我实现了这些方法:

@Override
public Iterator<String> iterator() {
    return list.iterator();
}

@Override
public <T> T[] toArray(T[] a) {
    return list.toArray(a); // Better not to return a,but should work either way.
}

然后我测试了 CustomList

CustomList strings = new CustomList();
strings.addAll(Arrays.asList("A","B","C"));

Iterator<String> iterator = strings.iterator();
String firstStr = iterator.next();
System.out.println("Iterator test: "+ firstStr);

String[] arr = new String[strings.size()];
strings.toArray(arr);
System.out.println("toArray() test: "+ Arrays.toString(arr));

String join = String.join(" ",strings);
System.out.println("String.join test: "+join);

输出:

Iterator test: A
toArray() test: [A,B,C]
String.join test: A B C

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...