有个对象A,里面有属性id List<A> = new ArrayList<A>; 如何判断list里面是否存在一个id为1的对象? 我想到的是用for语句来遍历这个list,然后比较id,但感觉这个方法太弱了,有没有其他好的方法呢? |
|
5分 |
可以获取到a1对象
list.contains(a1)来判断 |
当然这样比较的就不是id为1了而是整个a1
|
|
5分 |
一般来说也就是循环遍历了
不过要追求极致的话,你可以研究下查找的相应算法,比如二分查找、斐波那契查找。然后你就会发现进入了一个欲仙欲死的算法世界,严重感觉智商堪忧……起码我就是这样的 |
5分 |
数据量不多的话,完全没有必要,我都见过3个这个的帖子的,就用for循环就行,简单,个人看法
|
5分 |
如果id唯一 可以永hashmap
|
5分 |
一般LIST中的数据量不会太大 所以直接遍历是最好的方式。
|
|
|
大概几百条,算多吗 |
|
5分 |
要不你就用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; } } |
5分 |
你就按1000条算,你用for循环执行,看看大概需要多少时间,一点也不算多 |
2分 |
for+if 足以,没必要搞得那么深入,几百万的数据用for+if 也很快
|
1分 |
都这样的。
要不做多几个索引,空间换时间。 |
1分 |
总结 还是自己想太多了 for 速度很快
|
1分 |
要我说啊 写啥for循环啊. 有的集合里都自带检查方法的.
再不济那些开源的项目啦.里头那些工具类,都处理的妥妥的了. 咱们拿来用就好.还方便,还安全.下个jar就完事了. |
但是你自个要知道,那些集合的里头的那些玩意…确实都是循环和判断..知道就好.不用自己各写 |