删除重复的ArrayList自定义对象

Nic*_*ada 5 java arraylist duplicate-removal

我有一个ArrayList,它包含一个类的元素Event.Event有两个属性,NameTimestamp.该列表现在显示所有事件.我想删除具有相同名称但不同时间戳的重复项,并将它们放在另一个列表中.这样,用户可以单击具有该名称的事件,然后选择日期.

我已经在我的应用程序中覆盖了函数equals(比较名称和时间戳)以及其他一些功能.

我怎么解决这个问题?

Jor*_*lla 22

如果您已经拥有自己的equals方法,则无法使用Hash集合.您必须手动检查它实现嵌套循环:

List<Event> allEvents = // fill with your events.
List<Event> noRepeat = new ArrayList<Event>();

for (Event event : allEvents) {
    boolean isFound = false;
    // check if the event name exists in noRepeat
    for (Event e : noRepeat) {
        if (e.getName().equals(event.getName()) || (e.equals(event))) {
            isFound = true;        
            break;
        }
    }
    if (!isFound) noRepeat.add(event);
}
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢,这解决了我的问题! (2认同)