当前位置: 首页 > 知识库问答 >
问题:

使用java中包含对象的属性获取数组列表的索引[重复]

顾跃
2023-03-14

我有一个对象类型的列表。因为我有一个字符串属性idNum。现在我想通过传递idNum来获取列表中对象的索引。

List<Object1> objList=new ArrayList<Object1>();

我不知道如何给出对象列表。indexOf(//不知道如何在这里给出)

是否可以在不迭代列表的情况下这样做。我只想使用indexOf()方法。

共有3个答案

吴胜
2023-03-14

你不能用indexOf做这件事。相反,列表中的所有对象都应该从公共接口继承,例如

interface HasIdNum {
    String getIdNum();
}

现在,您可以将列表设置为list

for (HasIdNum hid: objList) {
   if (hid.getIdNum().equals(idNumToFind) {
       return hid;
   }
}
return null;

要获取索引而不是对象,请执行以下操作:

for (int i=0;i<objList.size();i++) {
   HasIdNum hid = objList.get(i);
   if (hid.getIdNum().equals(idNumToFind) {
       return i;
   }
}
return -1;

或者,您也可以使用反射来查询对象的方法,但是这会慢得多,也不安全,因为您会丢失所有编译时类型检查。

羊舌兴文
2023-03-14

在基于idNum字段的Object1类中实现equals(和hashCode),然后像这样使用List.indexOf

int i = objList.indexOf(new Object(idNum));

或者专门上一节航海课

    final String idNum = "1";
    int i = list.indexOf(new Object() {
        public boolean equals(Object obj) {
            return ((X)obj).idNum.equals(idNum);
        }
    });
习狐若
2023-03-14

写一个小帮手方法。

 private int getIndexByProperty(String yourString) {
        for (int i = 0; i < objList.size(); i++) {
            if (object1 !=null && object1.getIdNum().equals(yourString)) {
                return i;
            }
        }
        return -1;// not there is list
    }

如果没有找到,不要忘记返回-1。

 类似资料:
  • 问题内容: 我有一个对象类型列表。在那我有一个String属性idNum。现在,我想通过传递idNum获取列表中对象的索引。 我不知道怎么给 是否可以执行此操作而不迭代列表。我只想使用方法。 问题答案: 编写一个小的辅助方法。 如果找不到,不要忘记返回-1。

  • 我想通过对象在Java中的属性来获取列表中对象的索引。 例: 现在,我想获取一个名为“Girish”的对象的索引。请务必让我知道JAVA中的代码。

  • 问题内容: 我的字符串列表如下所示: 我的期望是,我想检查父列表是否包含 序列 子列表,然后基于子列表获取父列表中的开始索引和结束索引。 从上面的示例: 我尝试使用方法,但它不在乎列表项的顺序,因此无法从此方法获取开始和结束索引。 我正在寻找最快的方法,因为我的列表中有很多数据,而且我必须从许多输入字符串中进行搜索。 任何帮助,将不胜感激! 更新 : 我需要获取所有子列表的索引都包含在父列表中。例

  • 问题内容: 当存在时,是否有可能获得全部列表?是否为此准备了电话,还是我必须编写一个foreach循环,如: 问题答案: Java 8及更高版本: 如果需要确保得到结果,则必须将最后一行更改为: Java 7及以下版本: Java 8之前的标准集合API不支持这种转换。您必须编写一个循环(或将其包装在您自己的“地图”函数中),除非您使用一些更高级的集合API /扩展。 (您的Java代码段中的行正

  • 为什么我不能得到数组中给定对象的索引? 期望的结果显然是2…

  • 我是Java编程的新手,我正在使用数组。在数组中,索引必须是整数,它不允许浮点数或双精度型,所以我使用了长数据类型作为索引,它给出了错误。然而,当我使用字节和短整型和Int时,它的工作原理。我想知道,因为错误是“从多头到int的可能有损转换”,是否只允许在索引中使用int,并且由于字节和短小,这就是为什么它起作用(自动升级)并且long大于int,所以它给出了错误(没有自动取消)请帮助