有个对象A,里面有属性id
List<A> = new ArrayList<A>;
A a1 = new A();
a1.id = 1;
A a2 = new A();
a2.id = 2;
如何判断list里面是否存在一个id为1的对象?
我想到的是用for语句来遍历这个list,然后比较id,但感觉这个方法太弱了,有没有其他好的方法呢?
------解决方案--------------------
可以获取到a1对象
list.contains(a1)来判断
------解决方案--------------------
一般来说也就是循环遍历了
不过要追求极致的话,你可以研究下查找的相应算法,比如二分查找、斐波那契查找。然后你就会发现进入了一个欲仙欲死的算法世界,严重感觉智商堪忧……起码我就是这样的
------解决方案--------------------
数据量不多的话,完全没有必要,我都见过3个这个的帖子的,就用for循环就行,简单,个人看法
------解决方案--------------------
如果id唯一 可以永hashmap
------解决方案--------------------
一般LIST中的数据量不会太大 所以直接遍历是最好的方式。
------解决方案--------------------
要不你就用map吧!
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args) throws Exception {
Map<Integer,List<A>> map=new HashMap<Integer,List<A>>();
A p1=new A(1);
addPersonToMap(map,p1);
A p2=new A(3);
addPersonToMap(map,p2);
A p3=new A(1);
addPersonToMap(map,p3);
System.out.println(map.get(1));
}
private static boolean addPersonToMap(Map<Integer,List<A>> map,A p1){
boolean flag;
int key=p1.getId();
if(map.containsKey(key)){
List<A> value=map.get(1);
value.add(p1);
map.put(key, value);
flag=true;
}else{
List<A> value=new ArrayList<A>();
value.add(p1);
map.put(key, value);
flag=false;
}
return flag;
}
}
下面是类A的一个简单定义
class A{
int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "A [id=" + id + "]";
}
public A() {
super();
}
public A(int id) {
super();
this.id = id;
}
}
------解决方案--------------------
你就按1000条算,你用for循环执行,看看大概需要多少时间,一点也不算多
------解决方案--------------------
for+if 足以,没必要搞得那么深入,几百万的数据用for+if 也很快
------解决方案--------------------
都这样的。
要不做多几个索引,空间换时间。
------解决方案--------------------
总结 还是自己想太多了 for 速度很快
------解决方案--------------------
要我说啊 写啥for循环啊. 有的集合里都自带检查方法的.
再不济那些开源的项目啦.里头那些工具类,都处理的妥妥的了.
咱们拿来用就好.还方便,还安全.下个jar就完事了.