日期:2014-05-20  浏览次数:20915 次

List的indexOf方法
使用List类的indexOf方法可以返回指定元素的索引
但是假如是List<Foo>
那么我想通过Foo的唯一性的ID来返回索引
只能通过循环获取吗?
[code=Java]
private int getIndex(List<Foo> list,Foo foo){
  int size=list.size();//list是List<Foo>的一个实例
  int index=-1;
  Foo temp=null;
  for(int i=0;i<size;i++){
  temp=list.get(i);
  if(temp.ID==foo.ID){
  return i;
}

}
return index;
}
/code]
还有其他方法吗?谢谢各位了

------解决方案--------------------
时间复杂度是0(n),已经够可以了
------解决方案--------------------
如果是这样的话为什么要用List呢,用Map吧,这样就是key-value了,就可以达到楼主的要求了~
------解决方案--------------------
如果List<Foo>中的Foo是唯一的,可以考虑用set来做
------解决方案--------------------
楼主真是牛!!

 List是保存的只是Foo实例的引用, 所以当你修改Foo实例的时候, List所指的还是你那个修改的Foo实例, 所以保存在List当中的对象一般如果发生变化, 可以反映到List上的。


至于用什么方法查找List中的Foo实例, 个人感觉用什么方法都一样, 最终还是要遍历的, 不过如果用散列的话更快点?