Home > Mobile >  How do sort list of objects by date parameters in a hashmap?
How do sort list of objects by date parameters in a hashmap?

Time:06-29

I have a hashmap with key and object like

HashMap<String,ListObj > profileMap= new HashMap<>();

The need to sort the objects in the list by date parameter (obj.getDate()) to delete the Date older than 1 year for that profileID i.e key in the map. How can I achieve this?

CodePudding user response:

If you are trying to have the elements in your List sorted, I recommend using a natively existing type such as a "SortedSet" implementation. E.g. a TreeSet

Map<String, TreeSet<Object>> profileMap = new HashMap<>();

This will have you implementing the Comparator Interface in which you can define to sort by Date.

public class Objekt implements Comparator<Objekt> {

@Override
public int compare(Objekt o1, Objekt o2) {
    if (o1.getDate().before(o2.getDate())) {
        return -1;
    } else if (o1.getDate().after(o2.getDate())) {
        return 1;
    } else {
        return 0;
    }
}

More on how to implement that here: Compare Object by dates ( implements Comparator)

CodePudding user response:

You can try to iterate over the HashMap item and filter the element with Date that is older than 1 year.

Given the Profile class as below

public class Profile {

private Date createdAt;

public Date getCreatedAt() {
    return createdAt;
}

public void setCreatedAt(Date createdAt) {
    this.createdAt = createdAt;
}

}

And our List is

HashMap<String, Profile> profiles = new HashMap<>();

Then we can simply do as below to get the list of Map.Entry that matches your requirement.

List<Map.Entry<String, Profile>> matchProfile = profiles.entrySet().stream().filter(item -> item.getValue().getCreatedAt().getYear() > 2015)
            .collect(Collectors.toList());
  • Related