如何截断列表以提供专业化

时间:2015-05-19 16:40:52

标签: java list encapsulation truncate

让我们想象一下PhonePerson接口:

public interface Phone {
    String getNumber();
    // ...
}

public interface Person {
    String getName();
    List<Phone> getPhones();
    // ...
}

我不想更改这些类,它们只存储数据,但我希望将它们一起显示,以避免在数百万个寄存器上迭代两次,一次在控制器上,另一次在数据表上查看,并避免做逻辑在视图上(不是操纵数据),我设法详细说明了这个解决方案:

abstract class PhonedPerson implements Person {
    private String phoneNumbers;

    public String getPhoneNumbers() {
        if (phoneNumbers == null) {
            phoneNumbers = StringUtils.join(
                CollectionUtils.collect(getPhones(), new Transformer() {
                    @Override
                    public Object transform(Object input) {
                        return ((Phone) input).getNumber();
                    }
                }),
                ", "
            );
        }
        return phoneNumbers;
    }
}

如何在不重复所有项目的情况下将List<Person>转换为List<PhonedPerson>

0 个答案:

没有答案