如何有效地为List的所有元素添加前缀?

How to add prefix to all the elements of List efficiently?

我有一个列表,我需要在列表中的所有元素中添加一个前缀。

下面是我通过迭代列表然后添加它的方式。还有其他更好的方法吗?任何可以做同样事情的一二班轮?

private static final List<DataType> DATA_TYPE = getTypes();

public static LinkedList<String> getData(TypeFlow flow) {
    LinkedList<String> paths = new LinkedList<String>();
    for (DataType current : DATA_TYPE) {
        paths.add(flow.value() + current.value());
    }
    return paths;
}

我需要 return LinkedList,因为我正在使用 LinkedList class 的一些方法,例如 removeFirst.

我现在在 Java 7。

对于一个衬垫,使用 Java 8 流 :

List<String> paths = DATA_TYPE.stream().map(c -> flow.value() + c.value()).collect(Collectors.toList());

如果必须生成 LinkedList,则应使用不同的收集器。

你的实现看起来不错,但如果你想要不同的东西,试试这个:

public static List<String> getData(final TypeFlow flow) {
    return new AbstractList<String>() {
        @Override
        public String get(int index) {
            return flow.value()+DATA_TYPE.get(index).value();
        }

        @Override
        public int size() {
            return DATA_TYPE.size();
        }
    };
}

通过这种方式,您可以创建一个 "virtual list",它实际上不包含数据,但会即时计算。