【发布时间】:2018-01-15 22:00:50
【问题描述】:
我正在使用 Java 7。是否可以根据特定的属性值在 ArrayList 中获取对象的索引。例如:
class Abc{
String first_name;
String last_name;
// getter and setters...
}
现在
List<Abc> abcList = new ArrayList();
Abc abcObj = new Abc();
abcObj.setFirst_name("Jeet");
abcObj.setLast_name("Adhikari");
abcList.add(abcObj);
Abc abcObj2 = new Abc();
abcObj2.setFirst_name("John");
abcObj2.setLast_name("Something");
abcList.add(abcObj2);
现在有没有更好的方法无需迭代来获取 abcList 中 name = "John" 中的对象的索引。
【问题讨论】:
-
不,除非您使用地图或索引。
-
即使在 Java 8 中,您也无法在不迭代的情况下获取列表中的索引,在 Java 8 中您可以将迭代隐藏在流后面,但您无法完全摆脱它。跨度>
-
好的,谢谢:)。隐藏流后面的迭代,如?你能解释一下吗?
-
他的意思是使用流api,例如
list.stream().filter( /*your filter*/ ).collect( /*some collector, e.g. a list collector*/ ). -
@Thomas 是 Java 7。没有可用的流。