例如
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)
}
有没有什么高性能的方法或者算法?
------解决思路----------------------
你确定你这叫对象么...
------解决思路----------------------
for (People people : list) {
if(people.getAge().equals("1")){
System.out.println("对象:"+people.getName());
}
}
这个需要高性能,你有多少数据啊...
------解决思路----------------------
我们也 这么用。
------解决思路----------------------
Collections.binarySearch 方法
------解决思路----------------------
binarySearch(List<? extends T> list, T key, Comparator<? super T> c)这个问题问的,楼主这样写,要是平常就是要for(){} ,比较性能的话,就是list 、map、最后这个使用二分的貌似我没怎么用过,不过应该效率很高。仁者见仁,智者见智
使用二分搜索法搜索指定列表,以获得指定对象。
------解决思路----------------------
哥。 用这个先要排序啊。 排序比单个查找还费时吧。
其实对于list,只能通过遍历来查找,对于数据不大,性能上没问题。
要是数据很多,应该优先考虑hashmap,而不是用list来存放数据
------解决思路----------------------
性能的话,你可以实际测量下
------解决思路----------------------
建议还是直接遍历吧
------解决思路----------------------
你想效率高,就别用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;
}
}
------解决思路----------------------
循环遍历效率不会低
------解决思路----------------------
10楼说的对,用map就相当不错了