如何有效地为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",它实际上不包含数据,但会即时计算。
我有一个列表,我需要在列表中的所有元素中添加一个前缀。
下面是我通过迭代列表然后添加它的方式。还有其他更好的方法吗?任何可以做同样事情的一二班轮?
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",它实际上不包含数据,但会即时计算。