gpt4 book ai didi

java - 如何通过键列表对 Hashmap 中的列表元素进行分组

转载 作者:行者123 更新时间:2023-12-01 12:09:31 27 4
gpt4 key购买 nike

我正在尝试使用 HashMap 将事件列表分组为日期,但我在实现它时遇到问题。我希望日期成为关键,而事件成为值。因此,每个与键匹配的事件都将存储在 HashMap 的列表中。到目前为止,我有一个事件列表和一个日期列表......我的代码如下所示,提前致谢。

代码

public class TestMap {

public static void main(String[] args){
TestMap test = new TestMap();

List<Date> mDays = new ArrayList<Date>();
SimpleDateFormat mFormat = new SimpleDateFormat("EEEE d MMMM yyyy");
GregorianCalendar mCalendar = (GregorianCalendar)GregorianCalendar.getInstance();
mCalendar.setTime(new Date());
for (int i = 0; i < 7; i++){
mDays.add(mCalendar.getTime());
mCalendar.add(Calendar.DAY_OF_WEEK, 1);
System.out.println("Date: " + mFormat.format(mDays.get(i)));

}


List<Events> mEvents = new ArrayList<Events>();
mEvents.add( new Events("1", "boat party", "Sunday 7 December 2014"));
mEvents.add( new Events("2", "church meeting", "Monday 8 December 2014"));
mEvents.add( new Events("3", "shopping", "Saturday 13 December 2014"));
mEvents.add( new Events("4", "clubbing", "Friday 12 December 2014"));
mEvents.add( new Events("5", "visiting", "Thursday 11 December 2014"));
mEvents.add( new Events("6", "tour", "Wednesday 10 December 2014"));
mEvents.add( new Events("7", "work", "Tuesday 9 December 2014"));
mEvents.add( new Events("1", "beckie birthday", "Sunday 7 December 2014"));
mEvents.add( new Events("2", "camping", "Monday 8 December 2014"));
mEvents.add( new Events("3", "gym", "Saturday 13 December 2014"));
mEvents.add( new Events("4", "working", "Friday 12 December 2014"));
mEvents.add( new Events("5", "farming", "Thursday 11 December 2014"));
mEvents.add( new Events("6", "attend sales", "Wednesday 10 December 2014"));
mEvents.add( new Events("7", "work", "Tuesday 9 December 2014"));

for(Events evt: mEvents){

System.out.println("ID: " +evt.getEventId()+ " Title: "+evt.getEventTitle()+ " Date:
"+evt.getStartDate());
}
}

}

事件类:

class Events{

private String eventId;
private String eventTitle;
private String startDate;

public Events(String eventId, String eventTitle, String startDate) {
super();
this.eventId = eventId;
this.eventTitle = eventTitle;
this.startDate = startDate;
}
public String getEventId() {
return eventId;
}
public void setEventId(String eventId) {
this.eventId = eventId;
}
public String getEventTitle() {
return eventTitle;
}
public void setEventTitle(String eventTitle) {
this.eventTitle = eventTitle;
}
public String getStartDate() {
return startDate;
}
public void setStartDate(String startDate) {
this.startDate = startDate;
}

}

最佳答案

假设您按 ID 字段对项目进行分组,

// create a map which relates String-List of Event mapping
HashMap<String, List<Event>> listMap=new HashMap<String,List<Event>>();

// loop through the events
for(Events evt: mEvents){
if(!listMap.containsKey(evt.getID())){
listMap.put(evt.getID(), new ArrayList<Event>());
}
listMap.get(evt.getID()).add(evt);
}

// if you want to get a list of all events with the same ID,
Collection<Event> eventWithSpecificId=listMap.get("certain ID");

关于java - 如何通过键列表对 Hashmap 中的列表元素进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27342151/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com