oop通过实时转换在另一个列表上创建对象的java列表
所以,我需要这样:
public class ContainerList implements List<String>{
private final List<Integer> _list;
public ContainerList(List<Integer> listInt){
_list = listInt;
}
@Override
public int size() {
return _list.size();
}
@Override
public String get(int index) {
// some convertation, it is the main objective
return Integer.toString(_list.get(index));
}
... // so much overrides!!
}
我需要创建一个新的列表作为另一个实时转换列表的容器。我不能创建普通的ArrayList或这样做
List<String> listStr =
listInt.stream().map(i -> Integer.toString(i)).collect(Collectors.toList());
因为listInt可以在以后更改,并且这些更改应该以中间方式反映在listStr中。我可以创建一个自定义的通用列表,如ContainerList<;T>;,但并没有那么快。 因此,提示是:“是否存在任何不使用lib的优雅解决方案,或者您能推荐一个好的库?”
# 1 楼答案
你可以用番石榴汁
# 2 楼答案
可以像这样扩展^{}
然后你可以这样使用
因为
TransformedList
只是源列表上的一种视图,所以每当源列表发生变化时,它都会发生变化将输出:
一个
AbstractList
是只读的,当你调用一个像clear
、remove
、add
或set
这样的变异方法时,它会抛出一个UnsupportedOperationException
如果要使其可变覆盖: