gpt4 book ai didi

java - 在for循环中创建多个arraylist对象并将其添加到TreeMap

转载 作者:行者123 更新时间:2023-12-01 17:51:38 24 4
gpt4 key购买 nike

是否有任何解决方案可以减少以下代码行数?

TreeMap<Integer,List<SomeObject>> myMap = new TreeMap<Integer,List<SomeObject>>();

List<SomeObject> list1 = new ArrayList<SomeObject>();
list.add(someObjectInstance1);
list.add(someObjectInstance2);

List<SomeObject> list2 = new ArrayList<SomeObject>();
list.add(someObjectInstance1);
list.add(someObjectInstance2);

List<SomeObject> list3 = new ArrayList<SomeObject>();
list.add(someObjectInstance1);
list.add(someObjectInstance2);

List<SomeObject> list4 = new ArrayList<SomeObject>();
list.add(someObjectInstance1);
list.add(someObjectInstance2);

myMap.put(1, list1);
myMap.put(2, list2);
myMap.put(3, list3);
myMap.put(4, list3);

假设SomeObject表示自定义日期类型和 List<SomeObject> currentWeek将代表日期列表。在此列表中,我将仅存储一周的开始和结束日期。我必须将前几周(通过从当前星期日和当前星期六减去 7 天)存储在 map 中。

如果循环尺寸很小,上面的代码看起来会很好。如果我的循环大小超过 20 怎么办?然后我尝试了以下解决方案。

    private Map<Integer, List<SomeObject>> getPreviousWeeks(List<SomeObject> currentWeek) {
TreeMap<Integer,List<SomeObject>> treeMap = new TreeMap<Integer,List<SomeObject>>();
for(int n=0; n<20; n++) {
List<SomeObject> nthWeek = currentWeek;
SomeObject nthWeekStartDate = nthWeek.get(0);
SomeObject nthWeekEndDate = nthWeek.get(1);
nthWeek.clear();
nthWeek.add(nthWeekStartDate);
nthWeek.add(nthWeekEndDate);
treeMap.put(n,nthWeek)
nthWeek.clear();
nthWeekStartDate = nthWeekStartDate.subtractDays(7);
nthWeekEndDate = nthWeekEndDate.subtractDays(7);
nthWeek.add(nthWeekStartDate);
nthWeek.add(nthWeekEndDate);
currentWeek = nthWeek;
}
return treeMap;
}

这里的问题是,它返回的是同一天的 20 天。当我调试时,它仅在第一次迭代中工作正常。

有人可以帮我吗?

谢谢。

最佳答案

尝试使用您首先提到的代码。声明您的列表后:

int index = 1;
List<SomeObject>[] lists = new List[]{list1; list 2; list 3; list4}
TreeMap<Integer,List<SomeObject>> myMap = new TreeMap<Integer,List<SomeObject>>();
for (List<SomeObject> list : lists) {
list.add(someObjectInstance1);
list.add(someObjectInstance2);
myMap.put(index, list);
index++;
}

关于java - 在for循环中创建多个arraylist对象并将其添加到TreeMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60785472/

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