java中的同时满足全部条件,java 根据条件在List中筛选定符合条件的对象

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

例如

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());

}

}

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

------解决思路----------------------

引用:for (People people : list) {

if(people.getAge().equals("1")){

System.out.println("对象:"+people.getName());

}

}

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

我们也 这么用。

------解决思路----------------------

Collections.binarySearch 方法

------解决思路----------------------

引用:Collections.binarySearch 方法binarySearch(List extends T> list, T key, Comparator super T> c)

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

------解决思路----------------------

引用:Collections.binarySearch 方法

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

其实对于list,只能通过遍历来查找,对于数据不大,性能上没问题。

要是数据很多,应该优先考虑hashmap,而不是用list来存放数据

------解决思路----------------------

引用:Quote: 引用:Collections.binarySearch 方法

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

其实对于list,只能通过遍历来查找,对于数据不大,性能上没问题。

要是数据很多,应该优先考虑hashmap,而不是用list来存放数据

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

------解决思路----------------------

建议还是直接遍历吧

------解决思路----------------------

你想效率高,就别用List了啊!试试用下面这个Map

Map>,就是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> map=new HashMap>();

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> map,People p1){

boolean flag;

int key=p1.getAge();

if(map.containsKey(key)){

List value=map.get(1);

value.add(p1);

map.put(key, value);

flag=true;

}else{

List value=new ArrayList();

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就相当不错了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值