我可以用不同的方式使indexOf比较对象吗?

水母

我想使用,indexOf但是中的对象List将不是相等的对象,但是它们将具有相等的值(即,它们是等效的但不相等)。

我想以indexOf不同于该Object.equals方法的方式进行比较我当时正在考虑改用equals方法来使用我的isEquivalent方法,但不确定(即使有可能)如何执行此操作。

我已经尝试了许多变体,但是不断出错:

List<CustomType> items{
        @Override
        public boolean equals(Object o)
        {
             return false;
        }
    }
    = //stuff to populate it

在他们谈论EqualityComparer的地方也看到了这个答案,在Java中是否有类似的东西?

还是有其他方法可以做到这一点?

板球运动员

这是我的努力。我使用过,ArrayList因为List是一个接口,您将需要重写所有方法。

List<CustomType> customList = new ArrayList<CustomType>() {
    @Override
    public int indexOf(Object o) {
        if (o instanceof CustomType) {
            for (int i = 0; i < this.size(); i++) {
                CustomType c = (CustomType) o;
                if (c.isEquivalent(this.get(i))) {
                    return i;
                }
            }
        }
        return -1;
    }
};
// use indexOf like normal, but beware of side-effects as mentioned in the comments

或者

我在前面的评论中试图说的是,如果您覆盖List.equals,则意味着您正在将List对象与另一个对象而不是列表中的对象进行比较要完成您要问的事情,您需要这样做。

class CustomType {

    public boolean isEquivalent(CustomType ct) {
        return true; // TODO: Implement this
    }

    @Override
    public boolean equals(Object obj) {
        // TODO: Implement this
        if (obj instanceof CustomType) {
            return this.isEquivalent((CustomType) obj); 
        }
        return false;
    }

    @Override
    public int hashCode() {
        return super.hashCode(); // TODO: Implement this
    }
}

public static void main(String args[]) {
    List<CustomType> lst = new ArrayList<CustomType>();
    // use indexOf like normal
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以创建一个可以用不同方法访问的对象吗?

来自分类Dev

Grep电话号码,可以用不同的方式格式化

来自分类Dev

您可以用不同的语言整理文件的一部分吗?

来自分类Dev

我可以使用NUnit的EqualTo()。Using()比较不同类型的对象吗?

来自分类Dev

我可以基于Java中的某些条件用不同的对象初始化相同的变量名吗?

来自分类Dev

我可以基于Java中的某些条件用不同的对象初始化相同的变量名吗?

来自分类Dev

我可以用扬声器发出的任何声音以某种方式录制我的屏幕吗?

来自分类Dev

您可以用两种不同的方式编写自己的Comparator对ArrayList进行排序吗?

来自分类Dev

我们可以以编程方式比较具有相同分辨率的不同图像吗?

来自分类Dev

我可以用constexpr方式获取C ++类型名称吗?

来自分类Dev

我可以用更惯用的Active Record方式写这个吗?

来自分类Dev

我可以用更优雅的方式打印列表数据吗?

来自分类Dev

我可以用更好的方式编写简单的Python代码吗?

来自分类Dev

我可以用$('form')代替$吗?

来自分类Dev

我可以在iOS中以编程方式设置对象属性吗?

来自分类Dev

我可以在Windows中的不同项目目录中使用不同版本的rails吗?

来自分类Dev

我们可以针对不同的移动浏览器使用不同的CSS吗?

来自分类Dev

我可以为不同的键使用不同的pygame.set_repeat()值吗?

来自分类Dev

借助Elasticsearch,我可以针对不同的匹配标记用不同的HTML标签突出显示吗?

来自分类Dev

我们可以针对不同的移动浏览器使用不同的CSS吗?

来自分类Dev

我可以用子字符串过滤javascript对象数组吗?

来自分类Dev

我可以使用相同的URL,但可以使用不同的动态细分吗?

来自分类Dev

我可以使用不同尺寸的图像集作为预训练模型的输入的哪些方式?

来自分类Dev

我可以使用Google Translate使我的Raspberry Pi按需使用不同的语言说吗?

来自分类Dev

我可以配置我的外壳以用不同的颜色打印STDERR和STDOUT吗?

来自分类Dev

GIN或GIST可以用于“至少包含”比较吗?

来自分类Dev

我可以从不同的线程访问COM对象的接口吗?

来自分类Dev

Okta可以用于将以编程方式访问的API吗?

来自分类Dev

我可以用一种更优雅的方式对一个组件执行多项操作吗?

Related 相关文章

  1. 1

    我可以创建一个可以用不同方法访问的对象吗?

  2. 2

    Grep电话号码,可以用不同的方式格式化

  3. 3

    您可以用不同的语言整理文件的一部分吗?

  4. 4

    我可以使用NUnit的EqualTo()。Using()比较不同类型的对象吗?

  5. 5

    我可以基于Java中的某些条件用不同的对象初始化相同的变量名吗?

  6. 6

    我可以基于Java中的某些条件用不同的对象初始化相同的变量名吗?

  7. 7

    我可以用扬声器发出的任何声音以某种方式录制我的屏幕吗?

  8. 8

    您可以用两种不同的方式编写自己的Comparator对ArrayList进行排序吗?

  9. 9

    我们可以以编程方式比较具有相同分辨率的不同图像吗?

  10. 10

    我可以用constexpr方式获取C ++类型名称吗?

  11. 11

    我可以用更惯用的Active Record方式写这个吗?

  12. 12

    我可以用更优雅的方式打印列表数据吗?

  13. 13

    我可以用更好的方式编写简单的Python代码吗?

  14. 14

    我可以用$('form')代替$吗?

  15. 15

    我可以在iOS中以编程方式设置对象属性吗?

  16. 16

    我可以在Windows中的不同项目目录中使用不同版本的rails吗?

  17. 17

    我们可以针对不同的移动浏览器使用不同的CSS吗?

  18. 18

    我可以为不同的键使用不同的pygame.set_repeat()值吗?

  19. 19

    借助Elasticsearch,我可以针对不同的匹配标记用不同的HTML标签突出显示吗?

  20. 20

    我们可以针对不同的移动浏览器使用不同的CSS吗?

  21. 21

    我可以用子字符串过滤javascript对象数组吗?

  22. 22

    我可以使用相同的URL,但可以使用不同的动态细分吗?

  23. 23

    我可以使用不同尺寸的图像集作为预训练模型的输入的哪些方式?

  24. 24

    我可以使用Google Translate使我的Raspberry Pi按需使用不同的语言说吗?

  25. 25

    我可以配置我的外壳以用不同的颜色打印STDERR和STDOUT吗?

  26. 26

    GIN或GIST可以用于“至少包含”比较吗?

  27. 27

    我可以从不同的线程访问COM对象的接口吗?

  28. 28

    Okta可以用于将以编程方式访问的API吗?

  29. 29

    我可以用一种更优雅的方式对一个组件执行多项操作吗?

热门标签

归档