java 根据条件在List中筛选出符合条件的对象

J2EE 码拜 10年前 (2015-04-14) 8513次浏览 0个评论

例如
 List list = NEW ArrayList();
people p = new Peple();
p.setage(“1”);
p.setname(“2”);
people p2 = new Peple();
p2.setage(“3”);
p2.setname(“4”);
people p3= new Peple();
p3.setage(“1”);
p3.setname(“2”);
lsit.add(p);
lsit.add(p2);
lsit.add(p3);

给定条件“1” 我要筛选出List中age字段值是1的对象

不要用简单的for循环
如 fro(…){
xx.eques(1)
}
有没有什么高性能的方法或者算法

java 根据条件在List中筛选出符合条件的对象
2分
你确定你这叫对象么…
java 根据条件在List中筛选出符合条件的对象
2分
 for (People people : list) {
			if(people.getAge().equals("1")){
				System.out.println("对象:"+people.getName());
			}
		}

这个需要高性能,你有多少数据啊…

java 根据条件在List中筛选出符合条件的对象
2分
引用 2 楼 shijing266 的回复:
 for (People people : list) {
			if(people.getAge().equals("1")){
				System.out.println("对象:"+people.getName());
			}
		}

这个需要高性能,你有多少数据啊…

我们也 这么用。

java 根据条件在List中筛选出符合条件的对象
2分
Collections.binarySearch 方法
java 根据条件在List中筛选出符合条件的对象
2分
引用 4 楼 longtian1213 的回复:

Collections.binarySearch 方法

binarySearch(List<? extends T> list, T key, Comparator<? super T> c) 
          使用二分搜索法搜索指定列表,以获得指定对象

  这个问题问的,楼主这样写,要是平常就是要for(){} ,比较性能的话,就是list 、map、最后这个使用二分的貌似我没怎么用过,不过应该效率很高。仁者见仁,智者见智

java 根据条件在List中筛选出符合条件的对象
2分
引用 4 楼 longtian1213 的回复:

Collections.binarySearch 方法

哥。 用这个先要排序啊。  排序比单个查找还费时吧。

其实对于list,只能通过遍历来查找,对于数据不大,性能上没问题。
要是数据很多,应该优先考虑hashmap,而不是用list来存放数据

java 根据条件在List中筛选出符合条件的对象
2分
引用 6 楼 a12939026 的回复:
Quote: 引用 4 楼 longtian1213 的回复:

Collections.binarySearch 方法

哥。 用这个先要排序啊。  排序比单个查找还费时吧。

其实对于list,只能通过遍历来查找,对于数据不大,性能上没问题。
要是数据很多,应该优先考虑hashmap,而不是用list来存放数据

性能的话,你可以实际测量下

java 根据条件在List中筛选出符合条件的对象
所要的包
import org.apache.commons.beanutils.BeanPredicate;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
import org.apache.commons.collections.PredicateUtils;
import org.apache.commons.collections.functors.EqualPredicate;

1:list 你要在里面筛选的对象集合
存放格式例如
    list.add(user1);       
   list.add(user2);       
   list.add(user3);      
2:tableColumnName: user 里面的属性字段:      例如  name
3: agers:  name字段的属性值,也就是你要筛选出 name 的名称为 “张三” 的所有list
public static  Collection checkList(List list,String tableColumnName,String agers){
List templist = new ArrayList();
EqualPredicate parameter = new EqualPredicate(agers);
    BeanPredicate tableCoulmn_paramerter = new BeanPredicate(tableColumnName, parameter);
    Predicate[] allPredicateArray = {tableCoulmn_paramerter };
    Predicate allPredicate = PredicateUtils.allPredicate(allPredicateArray);
    Collection<Tache> filteredCollection = CollectionUtils.select(list, allPredicate);
return filteredCollection;
}
给大家分享下这个用法,具体原因还是不清楚 但是能实现我的需求
知其然,不知其所以然。
再次求问如果是多条件要怎么弄呢?项目紧张暂时没有空研究 
以上如果有什么错误请指教

java 根据条件在List中筛选出符合条件的对象
2分
建议还是直接遍历吧
java 根据条件在List中筛选出符合条件的对象
5分
你想效率高,就别用List了啊!试试用下面这个Map
Map<Integer,List<Peple>>,就是map中添加记录时需要你自己判断一下,该key是否以存在

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<People>> map=new HashMap<Integer,List<People>>();
		People p1=new People(1,"2");
		addPersonToMap(map,p1);
		People p2=new People(3,"4");
		addPersonToMap(map,p2);
		People p3=new People(1,"2");
		addPersonToMap(map,p3);
		System.out.println(map.get(1));
	}
	private static boolean addPersonToMap(Map<Integer,List<People>> map,People p1){
		boolean flag;
		int key=p1.getAge();
		if(map.containsKey(key)){
			List<People> value=map.get(1);
			value.add(p1);
			map.put(key, value);
			flag=true;
		}else{
			List<People> value=new ArrayList<People>();
			value.add(p1);
			map.put(key, value);
			flag=false;
		}
		return flag;
	}
}
class People{
	int age;
	String name;
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public People() {
		super();
	}
	public People(int age, String name) {
		super();
		this.age = age;
		this.name = name;
	}

}
java 根据条件在List中筛选出符合条件的对象
2分
循环遍历效率不会低
java 根据条件在List中筛选出符合条件的对象
2分
10楼说的对,用map就相当不错了

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明java 根据条件在List中筛选出符合条件的对象
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!