Java:将对象列表转换为其他内容

时间:2014-09-10 11:50:32

标签: java

我有一个包含事件列表的类。

public class EventScheduler{

     List<Event> event

}

public class Event{

     private String text;
     private int timestamp;

}

我有一个EventView,它需要一个Event作为构造函数,并且有getter而且没有setter。

它基本上允许查看事件中设置的变量子集,同时以与事件类似的方式运行。

public class EventView{

     public EventView(Event event){
         this.event = event;
     }

     public String getText(){
         return event.getText();
     }

     //no timestamp getter as its not allowed for this view object.
}

因此,使用此设置,将List<Event>转换为List<EventView>的最快捷方式是什么? 或某种替代方案。

2 个答案:

答案 0 :(得分:4)

使用Java 8:

List<EventView> views = events.stream()
                              .map(EventView::new)
                              .collect(Collectors.toList());

答案 1 :(得分:3)

迭代每个Event并为其创建EventView,然后将其传递给列表:

List<EventView> eventViewList = new ArrayList<EventView>();
if(eventList != null) {
   for(Event event : eventList) {
       EventView eventView = new EventView(event);
       eventViewList.add(eventView);
   }
}