gpt4 book ai didi

java - 带条件迭代两个列表

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

问题:

我有两个按属性排序的不同长度的列表。我需要创建两个具有定义的记录计数并按属性排序的结果列表。循环 block 中应该有一个条件来验证应将哪条记录添加到结果列表中。

例如,两个列表按 date 属性按 DESC 顺序排序:

list1: [{'1', '13:45:55', 'List1Title1'}, {'2', '13:40:50', 'List1Title2'}]

list2: [{'1', '13:50:55', 'List2Title1'}, {'2', '13:35:50', 'List2Title2'}]

对于 count = 3,结果应如下所示:

resultList1: [{'1', '13:45:55', 'List1Title1'}, {'2', '13:40:50', 'List1Title2'}]

resultList2: [{'1', '13:50:55', 'List2Title1'}]

我尝试在已知循环计数的 for... 的帮助下迭代列表:

List<Tx> list1 = ...;
List<Tx> list2 = ...;
int list1Index = 0;
int list2Index = 0;
for (int i = 0; i < count; i++) {
if (list1.get(list1Index).getDate() > list2.get(list2Index).getDate()) {
resultList1.add(list1.get(list1Index));
++list1Index;
} else {
resultList2.add(list2.get(list2Index));
++list2Index;
}
}

但是此实现不适用于列表具有不同大小甚至为空的情况。

是否可以在没有大量 if/elseif block 的情况下迭代这两个列表?

最佳答案

循环直到selected == count或者list1list2都被遍历。

在循环中,

  • 如果list1list2已经遍历过了,那么只考虑左边一个。
  • 如果不是,请比较它们并确定应增加哪个索引。

    int selected = 0;

    for (int list1Index = 0, list2Index = 0;
    selected < count && (list1Index < list1.size() || list2Index < list2.size());
    selected++) {
    if (list1Index == list1.size()) {
    resultList2.add(list2.get(list2Index));
    list2Index++;
    } else if (list2Index == list2.size()) {
    resultList1.add(list1.get(list1Index));
    list1Index++;
    } else if (list1.get(list1Index).getDate() > list2.get(list2Index).getDate()) {
    resultList1.add(list1.get(list1Index));
    list1Index++;
    } else {
    resultList2.add(list2.get(list2Index));
    list2Index++;
    }
    }

关于java - 带条件迭代两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49220487/

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