gpt4 book ai didi

java - 如何在Java中根据公共(public)属性合并两个排序的对象列表

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

我有两个对象列表,它们都有一个称为时间戳的公共(public)属性,并且都按时间戳排序。

我想根据时间戳逐个广播这些对象,例如,如果第一个列表的第一个对象的时间戳<第二个列表的第一个对象,则广播第一个列表的第一个对象,然后将第一个列表的第二个对象与第二个列表的第一个对象。

我是java新手。这是我想到的:

 //Merge the 2 object lists based on timestamp
ListIterator<x> xIterator = list1.listIterator();
ListIterator<y> yIterator = list2.listIterator();
while (xIterator.hasNext() && yIterator.hasNext()) {
if (xIterator.next().timestamp <= yIterator.next().timestamp) {
Bundle extra = new Bundle();
extra.putParcelable(LocalBroadcastConstants.ACTION, xIterator.previous());
MyBroadcastManager.getInstance(getTargetContext()).sendBroadcast(
new Intent(LocalBroadcastConstants.ACTION_SEND).putExtras(extra)
);
yIterator.previous();
} else {
Bundle extra = new Bundle();
extra.putParcelable(LocalBroadcastConstants.ACTION,
yIterator.previous());
MyBroadcastManager.getInstance(getTargetContext()).sendBroadcast(
new Intent(LocalBroadcastConstants.ACTION_SEND).putExtras(extra)
);
xIterator.previous();
}

我知道我的逻辑不正确,因为对于迭代器中的第一项, xIterator.previous 和 yIterator.previous 将不指向任何内容。我似乎无法找到这个问题陈述的正确解决方案。请帮忙。

最佳答案

一个简单但易于实现的解决方案:

  • 创建一个仅包含两个列表中所有对象的列表
  • 创建一个知道如何从两个不同类中提取时间戳的比较器 - 然后比较它们
  • 使用 Collections .sort() 使用该比较器对合并列表进行排序

就是这样。现在,您可以循环排序列表以按顺序广播对象。

关于java - 如何在Java中根据公共(public)属性合并两个排序的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44996410/

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