繁体   English   中英

为什么我不能在Apache Commons中将Transformer设置为LazyList?

[英]Why can't I set a Transformer to a LazyList in Apache Commons?

在apache.commons.collections中,有一个名为MapUtils的类,它具有以下两种方法来定义Map,该Map可以为该地图创建按需对象:

所以我可以使用工厂实例化对象

Factory factory = new Factory() {
    public Object create() {
        return new Object();
    }
}

或转换器根据地图的键实例化新对象

Transformer factory = new Transformer() {
    public Object transform(Object mapKey) {
        return new Object(mapKey);
    }
}

Lists有一个类似的类: ListUtils ,但是该类只有一个带有Factory的方法:

我想像在地图情况下那样转换对象,但使用列表中对象的索引而不是地图中的键。

Transformer factory = new Transformer() {
    public Object transform(int index) {
        return new Object(index);
    }
}

我的问题是为什么没有lazyList(列表列表,Transformer转换器)? apache是​​否提供其他列表来执行此操作,还是我必须构建自定义实现?

谢谢。

首先,在我看来,您应该将Guava用于此类事情……它充分利用了泛型,并提供了经过深思熟虑,紧凑且明智的API。 它还提供了Lists.transform方法,该方法根据List中每个位置的元素来转换基础List

就是说,我认为通过索引转换List的转换方法没有多大意义。 考虑到转换将忽略其包含的元素,因此实际的基础List将完全没有意义……只有其大小才重要。 您能解释一下为什么要这样做吗?

暂无
暂无

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

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