gpt4 book ai didi

Java:允许重复的排序列表/集合

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:55 28 4
gpt4 key购买 nike

我有一个包含大量数据对象的程序。它们中的每一个都实现了 Comparable,并被设置为从最高到最低排序(基于一个简单的 long 值)包括重复值。我希望将这些对象存储在一个集合/列表中,以便我可以对其进行迭代,并在各自的位置拉出每个对象。

我研究过使用 TreeSet,但是这不允许重复,因此只保留具有相同值的众多对象之一。然后我找到了 TreeMultiset,它可以保持元素具有相同的值。唯一的问题是它只是存储同一对象的副本,而不是多个相同的对象。

是否有我可以使用的库/内置对象来做我想做的事,还是我应该自己创建一个实现?

注意:我不希望对象在 TreeMultiset 中复制的原因是因为该对象包含一个用户的唯一 ID 和一个时间值(这是比较的)

最佳答案

您可以使用包装类将相同的对象装箱,例如:

class MyContainer:IComparable{
public int compareValue;
public List<object> data;

public int CompareTo(MyContainer other){
return this.compareValue - other.compareValue;
}

public void AddItem(object item){
data.add(item);
}

public object GetItem(int Id){...}
}

class Program()
{
TreeSet<MyContainer> data;
public static void main(){
data.AddToContainer("aaa");
data.AddToContainer("aaa");
data.AddToContainer("ccc");

}

public void AddToContainer(object item){
if(data.contains(item)){
data.get(item).AddItem(item);
}
else{
MyContainer cont = new MyContainer();
cont.AddItem(item);
data.add(cont);
}
}

}

关于Java:允许重复的排序列表/集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24645056/

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