Code Bye

如何判断List中的对象的某个属性的值

 

有个对象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,但感觉这个方法太弱了,有没有其他好的方法呢?


5分
可以获取到a1对象
list.contains(a1)来判断
当然这样比较的就不是id为1了而是整个a1

5分
一般来说也就是循环遍历了

不过要追求极致的话,你可以研究下查找的相应算法,比如二分查找、斐波那契查找。然后你就会发现进入了一个欲仙欲死的算法世界,严重感觉智商堪忧……起码我就是这样的


5分
数据量不多的话,完全没有必要,我都见过3个这个的帖子的,就用for循环就行,简单,个人看法

5分
如果id唯一 可以永hashmap

5分
一般LIST中的数据量不会太大    所以直接遍历是最好的方式。
引用 3 楼 u012047741 的回复:

一般来说也就是循环遍历了

不过要追求极致的话,你可以研究下查找的相应算法,比如二分查找、斐波那契查找。然后你就会发现进入了一个欲仙欲死的算法世界,严重感觉智商堪忧……起码我就是这样的

引用 4 楼 shixitong 的回复:

数据量不多的话,完全没有必要,我都见过3个这个的帖子的,就用for循环就行,简单,个人看法

大概几百条,算多吗


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分
引用 8 楼 kouwoo 的回复:
Quote: 引用 4 楼 shixitong 的回复:

数据量不多的话,完全没有必要,我都见过3个这个的帖子的,就用for循环就行,简单,个人看法

大概几百条,算多吗

你就按1000条算,你用for循环执行,看看大概需要多少时间,一点也不算多


2分
for+if 足以,没必要搞得那么深入,几百万的数据用for+if  也很快

1分
都这样的。
要不做多几个索引,空间换时间。

1分
总结 还是自己想太多了 for 速度很快

1分
要我说啊 写啥for循环啊. 有的集合里都自带检查方法的.
再不济那些开源的项目啦.里头那些工具类,都处理的妥妥的了.
咱们拿来用就好.还方便,还安全.下个jar就完事了.
引用 14 楼 mysd76 的回复:

要我说啊 写啥for循环啊. 有的集合里都自带检查方法的.
再不济那些开源的项目啦.里头那些工具类,都处理的妥妥的了.
咱们拿来用就好.还方便,还安全.下个jar就完事了.

但是你自个要知道,那些集合的里头的那些玩意…确实都是循环和判断..知道就好.不用自己各写


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明如何判断List中的对象的某个属性的值