Herel Adrastel
Herel Adrastel

Reputation: 151

Split an ArrayList compared to an attribute

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

Answers (2)

cody123
cody123

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

Maciej Walkowiak
Maciej Walkowiak

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

Related Questions