2 pingfandw pingfandw 于 2013.07.31 00:08 提问

多个对象存储的ArrayList中,如何获取该对象在ArrayList里的索引值

多个对象存储的ArrayList中,如果只知道对象其中的一个属性,如何获取该对象在ArrayList里的索引值?

比如说:一个Person类有三个属性(String name ,String sex,int age)
Person p1=new Person("张三","男",20);
Person p2=new Person("李四","男",22);
Person p3=new Person("王五","男",24);

然后这些对象都储存在ArrayList集合里,如果只知道"李四"这个名字(在不知道性别和年龄的情况下),如何获取"李四"这个对象在ArrayList集合里的索引值(即1)?

4个回答

cj6585256
cj6585256   2013.07.31 10:15
已采纳
for(int i = 0;i<list.size();i++) {
 if("李四".equales(list.get(i).getName())){
return i;//i就是索引
}
}
cj6585256
cj6585256 ArrayList list = new ArrayList<String>();初始化加上类型就好了
4 年多之前 回复
cainiaoyihaoa
cainiaoyihaoa list里面不是存储的 对象吗? 可是取出来默认是 Object呀
4 年多之前 回复
cj6585256
cj6585256 不需要啊 name本来就是String类型啊
4 年多之前 回复
cainiaoyihaoa
cainiaoyihaoa 不用强制类型转换吗?
4 年多之前 回复
pingfandw
pingfandw 嗯,谢谢!
4 年多之前 回复
ladygagadu
ladygagadu   2013.08.07 08:17

int index = 0;
for(int i = 0 ; i<Arraylist.size(); i++)
{
if("李四".equals(Arraylist.get(i).getName()))
{
index = i;
}
}
index 就是你要获得的下标

lvyoudejiayu
lvyoudejiayu   2013.08.07 20:20

遍历整个ArrayList,把所有值相同的都取出来,用键值对的形式
for(int i = 0 ; i<Arraylist.size(); i++)
{
if("李四".equals(Arraylist.get(i).getName()))
{
Map.put(i,Arraylist(i));
}
}
这样就把所有想要的值和下标都放在Map中了

Shan_mei
Shan_mei   2013.08.06 18:15

对象中的属性是有可能重复的, 对此很难判断到底哪个对象的索引是你想要的。
除非能确保你要查的属性值是唯一的。
如果此, 那也只能通过遍历比较了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!