例如 给定条件“1” 我要筛选出List中age字段值是1的对象 不要用简单的for循环 |
|
2分 |
你确定你这叫对象么…
|
2分 |
for (People people : list) { if(people.getAge().equals("1")){ System.out.println("对象:"+people.getName()); } } 这个需要高性能,你有多少数据啊… |
2分 |
我们也 这么用。 |
2分 |
Collections.binarySearch 方法
|
2分 |
binarySearch(List<? extends T> list, T key, Comparator<? super T> c) 使用二分搜索法搜索指定列表,以获得指定对象。 这个问题问的,楼主这样写,要是平常就是要for(){} ,比较性能的话,就是list 、map、最后这个使用二分的貌似我没怎么用过,不过应该效率很高。仁者见仁,智者见智 |
2分 |
哥。 用这个先要排序啊。 排序比单个查找还费时吧。 其实对于list,只能通过遍历来查找,对于数据不大,性能上没问题。 |
2分 |
性能的话,你可以实际测量下 |
所要的包
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 你要在里面筛选的对象集合 |
|
2分 |
建议还是直接遍历吧
|
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; } } |
2分 |
循环遍历效率不会低
|
2分 |
10楼说的对,用map就相当不错了
|