Reputation: 151
I have an ArrayList<History>
.
The History
class has an attribute event
Is it possible to split the ArrayList<History>
in multiples ArrayList<History>
in relation to their event ?
Thank you
Upvotes: 0
Views: 275
Reputation: 2080
You can use Group By on event field.
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()));
}
}
Upvotes: 0
Reputation: 12932
With 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));
Will produce map with event names as a key and list of History
entries as a value.
Upvotes: 1