如果某个属性出现多次,如何从LinkedList中删除项目?

问题描述

我有一个LinkedList,其中填充了WebcacheEvents类型的对象。每个对象都具有描述,事件,标签,storyId等属性

//filling the list with data received earlier
List<WebcacheEvents> result = new LinkedList<WebcacheEvents>();
                for (Webcache event : events) 
                    result.add(new thabella.dto.out.WebcacheEvents(event));
                return result;

我想做的是删除列表中的另一个WebcacheEvent已使用了具有演讲ID的任何WebcacheEvent-这样,在我的结果中,每个演讲ID只出现一次。

因此,我不能简单地使用

if(!result.contains(event))
    result.add(event);

因为我并不是真正地在寻找真正的重复项,WebcacheEvent的每个属性都具有相同的值,但仅适用于具有相同的演讲者ID的对象。我收到的事件中可能有两个或多个具有相同的演讲者ID的对象。

是否有类似的方式使用“包含”方法,但仅用于对象的某些属性

解决方法

您可以仅使用过滤器:

$config['base_url'] = 'https://'.$_SERVER['HTTP_HOST'];

我想lecturId不能为空。

,

最简单的方法是:

LinkedList<WebCacheEvents> result = new LinkedList<WebCacheEvents>();
if(!doesContain(result,event))
result.add(event); 

public boolean doesContain(LinkedList<Integer> result,WebCacheEvents obj) {
  boolean isContained = false;
  for (WebCacheEvents data : result){
    if (data.getLectureId() == obj.getLectureId()){
      isContained = true;
      break;
    }
  }
  return isContained;
}