我有一个要实现的接口,其中包含以下方法签名:
/**
* Return an umodifiable ordered collection
*/
public List<String> getItems();
在我的特定实现中,我需要这些项目是唯一的。实现这一点的最佳方法是什么?
我考虑过
private List<String> items = new ArrayList<String>();
public List<String> getItems(){
return Collections.unmodifiableList(items);
}
public void addItem(String s){
// Inefficient -- has to scan entire list for contains
if (!items.contains(s)) items.add(s);
}
和
private LinkedHashSet<String> items = new LinkedHashSet<String>();
public List<String> getItems(){
// Inefficient -- has to copy the list
return Collections.unmodifiableList(new ArrayList(items));
}
public void addItem(String s){
items.add(s);
}
我真的很希望 LinkedHashSet 实现 List 接口,这样我就可以直接从我的第二种方法中返回它。是否有解决方法或更好的解决方案?