java - Java 中多种类型对象的高效重复检查

标签 java performance list interface

我正在开发一个项目,其中有多个类来保存从 xml 文件加载的数据。我想解决的问题是几乎所有的类都有这些方法:

  • addSingle[对象名称]
  • addMultiple[对象名称]

但是,一个类中可能有更多类型的对象需要通过这种方式添加。例如:


    class Airspace {
        private List airports;
        private List waypoints;
    ...
       public void addSingleAirport(Airport a) {...}
       public void addMultipleAirports(Airport[] a {...}
       public void addSingleWaypoint(Waypoint w) {...}
       public void addMultipleWaypoints(Waypoint w) {...}

    }

我正在考虑将这些 addSingleaddMultiple 方法放入接口(interface)中,然后在实现这些方法时根据对象类型决定应将其添加到哪个列表,但这不是很愚蠢吗?

有没有更有效的方法来做到这一点?我想避免将这些方法写入每个需要它们的特定对象的类中,因为它们的作用完全相同。

最佳答案

我不认为你的方法很愚蠢,但这种类型检查确实会影响性能。

尽管如此,扩展您的方法,我会保留按 Class 索引的列表的映射:

class Airspace {
    private Map<Class, List<Object>> lists = new HashMap();

    public void addSingle(Object o)
    {
        List<Object> list = lists.get(o.getClass());
        if(list == null)
        {
            list = new ArrayList();
            lists.put(o.getClass(), list);
        }
        list.add(o);
    }
...
...    

关于java - Java 中多种类型对象的高效重复检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24241442/

相关文章:

java - 在 Java 应用程序中编辑/etc/hosts/

algorithm - 在循环 block 中包含循环的 else block 的复杂性

mysql - 最好使用 : mysql column or file check to detect image?

java - 转换另一个列表中的列表

javascript - 动态创建的列表项可拖动 JavaScript

java - `java.lang.ClassFormatError` 错误代码列表

java - 为什么2147483647 + 1实际上是-2147483648?

java - 尝试在空对象引用上调用虚拟方法

以不同图像作为项目符号的 HTML 列表

performance - 删除大量数据后,Cassandra 查找查询速度很慢