0

我有一个跨越几年的日期数组列表,即ArrayList<Date> dateList 我有一个对象,它代表每年的月份网格,即

public class DateTileGrid
{
    private int mCurrentYear;
    private ArrayList<Date> mDateTiles;
        ... // GETTERS AND SETTERS
}

我想创建一个ArrayList<DateTileGrid>包含每年相关日期的内容。

我知道如何使用循环(讨厌的嵌套循环)来做到这一点,但我希望有一种更简洁的方法来实现这一点。

4

1 回答 1

2

在 Java 8 闭包到来之前,这可能是您所需要的

HashMap<Integer, DateTileGrid>  dataGridMap = new HashMap<>();
for (Date date: dateList) {
    int year = date.getYear(); //Deprecated.. use something better
    DateTileGrid dataGrid = dataGridMap.get(year);
    if(dataGrid == null){
        dataGrid = new DateTileGrid();
        dataGrid.setCurrentYear(year);
        dataGrid.setDateTiles(new ArrayList<Date>());
        dataGridMap.put(year, dataGrid);
    }
    dataGrid.getDateTiles().add(date);
}
//Here is your result
ArrayList<DateTileGrid> result = new ArrayList<>(dataGridMap.values());
于 2013-08-10T10:20:12.880 回答