2016-10-09 47 views
0

我有一个ArrayList<History>拆分ArrayList属性

History类有一个属性event

是否有可能在关系中的倍数ArrayList<History>ArrayList<History>分裂他们的活动吗?

谢谢

+0

你应该使用某种multimap事件作为密钥 –

+0

我的答案是否适合你? –

回答

0

您可以使用Group By on事件字段。

public class CreditCard { 

    private String event; 
    private String name; 

    public CreditCard() { 
     // TODO Auto-generated constructor stub 
    } 

    public CreditCard(String event, String name) { 
     super(); 
     this.event = event; 
     this.name = name; 
    } 

    public String getEvent() { 
     return event; 
    } 

    public void setEvent(String event) { 
     this.event = event; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    @Override 
    public String toString() { 
     return "CreditCard [event=" + event + ", name=" + name + "]"; 
    } 

    public static void main(String[] args) { 
     List<CreditCard> list = new ArrayList<CreditCard>(); 
     list.add(new CreditCard("A", "John1")); 
     list.add(new CreditCard("B", "John2")); 
     list.add(new CreditCard("C", "John3")); 

     list.add(new CreditCard("A", "mark1")); 
     list.add(new CreditCard("B", "mark2")); 
     list.add(new CreditCard("C", "mark3")); 

     Map<String,List<CreditCard>> obj = list.stream().collect(Collectors.groupingBy(CreditCard::getEvent,Collectors.toList())); 
    } 
} 
1

与Java 8:

List<History> list = Arrays.asList(new History("event1"), 
            new History("event2"), 
            new History("event1")); 

Map<String, List<History>> result = list.stream() 
             .collect(Collectors.groupingBy(History::getEvent)); 

会产生地图事件名称作为密钥,并且History条目的列表作为值。