本文介绍了如何返回的ArrayList&LT指数;现场>的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想以检索名单的特定元素的索引:

 的ArrayList<外勤及GT;名单=新的ArrayList<外勤及GT;();
    list.addAll(profile.getFieldsList());    对象privacyName =隐私;
    INT I = list.indexOf(privacyName);
    布尔doesContain = list.contains(privacyName);

有是包含在列表中的隐私的一个领域,但我始终是-1,doesContain永远是假的。为什么这个搜索无法正常工作?


解决方案

 公众诠释的indexOf(对象o){
         如果(O == NULL){
             的for(int i = 0; I<大小;我++)
                 如果(elementData中[I] == NULL)
                     返回我;
         }其他{
             的for(int i = 0; I<大小;我++)
                如果(o.equals(elementData中[I]))
                    返回我;
        }
        返回-1;
   }

您需要重写等于逻辑平等或依靠默认引用相等。

在这种情况下, privacyName.equals(elementData中[I])永远是假的。

I want to retrive index of specific element of my list :

    ArrayList<Field> list = new ArrayList<Field>();
    list.addAll(profile.getFieldsList());

    Object privacyName = "privacy";
    int i = list.indexOf(privacyName);
    boolean doesContain = list.contains(privacyName);

There is a field containing "privacy" in the list but i is always -1 and doesContain is always false. Why this search doesn't work ?

解决方案
    public int indexOf(Object o) {
         if (o == null) {
             for (int i = 0; i < size; i++)
                 if (elementData[i]==null)
                     return i;
         } else {
             for (int i = 0; i < size; i++)
                if (o.equals(elementData[i]))
                    return i;
        }
        return -1;
   }

You need to override equals for logical equality or rely on default for reference equality.

In this case privacyName.equals(elementData[i]) is always false.

这篇关于如何返回的ArrayList&LT指数;现场&GT;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-19 19:59