JAVA中对List进行查询

目录
  • List查询
  • 总结

List查询

JAVA中从数据库中取数据,根据MyBits返回结果主要有两种类型的List,一种是List<Entity>,还一种是List<Map<String,Object>>,

那么怎样对List结果集进行查询操作呢?当然最常用的是用for循环遍历,但是这个效率比较低下,下面是我认为比较好的操作方式,

对List<Map<String,Object>>的查询

    /**
     * 从列表中找出包括Value值的列表
     * @param list
     * @param keyName
     * @param value
     * @return
     */
    public static List<Map<String,Object>> findDataFromListMap(List<Map<String,Object>> list,String keyName,Object value) {
        Predicate<Map<String,Object>>predicate = new Predicate<Map<String,Object>>() {
            @Override
            public boolean evaluate(Map<String,Object> map) {
                // TODO Auto-generated method stub
                try {
                    Object val = map.get(keyName);
                    if(value == null || val == null)
                        return false;
                    return val.equals(value);
                }
                catch (Exception e) {
                    return false;
                }
            }
        };
        List<Map<String,Object>> result = (List<Map<String,Object>>) CollectionUtils.select( list, predicate);
        return result;
    }
    /**
     * 多值将交叉查找
     * @param list
     * @param keyName2ValueMap
     * @return
     */
    public static List<Map<String,Object>> findDataFromListMapByKeyValues(
            List<Map<String,Object>> list,
            Map<String,Object> keyName2ValueMap) {
        Predicate<Map<String,Object>>predicate = new Predicate<Map<String,Object>>() {
            @Override
            public boolean evaluate(Map<String,Object> map) {
                // TODO Auto-generated method stub
                try {
                    for(Map.Entry<String,Object> entry : keyName2ValueMap.entrySet()){
                        String keyName  = entry.getKey();
                        Object value = entry.getValue();
                        Object val = map.get(keyName);
                        if(StringUtils.isBlank(keyName) || value == null || val == null)
                            return false;
                        if(!val.equals(value))
                            return  false;
                    }
                    return true;
                }
                catch (Exception e) {
                    return false;
                }
            }
        };
        List<Map<String,Object>> result = (List<Map<String,Object>>) CollectionUtils.select( list, predicate);
        return result;
    }

对List<Entity>的查询

    /**
     * 从列表中找出包括Value值的对象列表
     * @param list
     * @param methodName
     * @param value
     * @return
     */
    public static <T,V> List<T> findObjFromList(List<T> list,String methodName,V value) {
    	Predicate<T>predicate = new Predicate<T>() {
			@Override
			public boolean evaluate(T obj) {
				// TODO Auto-generated method stub
				try {
					Method method = obj.getClass().getMethod(methodName);
					@SuppressWarnings("unchecked")
					V keyName = (V) method.invoke(obj);
					return keyName.equals(value);
				}
				catch (Exception e) {
					return false;
				}
			}
		};
		List<T> result = (List<T>) CollectionUtils.select( list, predicate);
		return result;
    }

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • Java中Iterator与ListIterator迭代的区别

    迭代的时候可以修改数据吗? 答,Iterator迭代的时候可以移除数据,但是不能添加;而ListIterator迭代时可以添加数据,移除数据,倒序遍历; public class Bianli { public static void main(String[] args) { ArrayList<String> list= new ArrayList<>(); list.add("aaa"); list.add("sss"); list.a

  • Java8中List转Map(Collectors.toMap) 的技巧分享

    前言 在实际项目中我们经常会用到 List 转 Map 操作,在过去我们可能使用的是 for 循环遍历的方式.举个例子: 先定义类: // 简单对象 @Accessors(chain = true) // 链式方法 @lombok.Data class User { private String id; private String name; } 然后有这样一个 List: List<User> userList = Lists.newArrayList( new User().setId(

  • 你真的理解Java中的ArrayList吗

    目录 1. 为什么需要ArrayList? 2. ArrayList底层是如何实现的? 3. 结合源码分析主要成员变量 4. 个人的一点总结 1. 为什么需要ArrayList? 图1 图2 记得在刚刚学习Java的时候,我们首先是学习了数组,这是我们学到的第一个可以存储多个对象的实例或者基本类型的具体值,数组存储的特点如下: 只能存储同种类型的数据. 在定义数组时,必须指定该数组的大小,并且在不改变数组的前提下,不可修改其长度. 以上特性就会导致很多弊端.比如:我们往往不希望数组只能存储一种数

  • java 用redisTemplate 的 Operations存取list集合操作

    java redisTemplate 的 Operations存取list集合 一 .存取为list类型 @RestController @RequestMapping("/test") @Slf4j public class TestController { @Autowired private RedisTemplate redisTemplate; @ApiOperation("redis-savelist") @PostMapping("/redi

  • Java实战小技巧之数组与list互转

    目录 前言 I. 数组转 List 1. Array.asList 1.1 知识点 2. new ArrayList 2.1 避雷预警 3. Collections.addAll II. 列表转数组 III. 小结 总结 前言 这个考题比较常见,也比较简单,难道就这也有什么可以说到的门路不成? 接下来本文好好的说一说它的几种实现姿势,总有一款你喜欢的 I. 数组转 List 1. Array.asList 这个考题太简单了,直接使用Array.asList不就完事了么,比如 @Test publ

  • Java中JDBC实现动态查询的实例详解

    一 概述 1.什么是动态查询? 从多个查询条件中随机选择若干个组合成一个DQL语句进行查询,这一过程叫做动态查询. 2.动态查询的难点 可供选择的查询条件多,组合情况多,难以一一列举. 3.最终查询语句的构成 一旦用户向查询条件中输入数据,该查询条件就成为最终条件的一部分. 二 基本原理 1.SQL基本框架 无论查询条件如何,查询字段与数据库是固定不变的,这些固定不变的内容构成SQL语句的基本框架,如 select column... from table. 2.StringBuilder形成D

  • JAVA中对List进行查询

    目录 List查询 总结 List查询 JAVA中从数据库中取数据,根据MyBits返回结果主要有两种类型的List,一种是List<Entity>,还一种是List<Map<String,Object>>, 那么怎样对List结果集进行查询操作呢?当然最常用的是用for循环遍历,但是这个效率比较低下,下面是我认为比较好的操作方式, 对List<Map<String,Object>>的查询 /** * 从列表中找出包括Value值的列表 * @p

  • java 中mongodb的各种操作查询的实例详解

    java 中mongodb的各种操作查询的实例详解 一. 常用查询: 1. 查询一条数据:(多用于保存时判断db中是否已有当前数据,这里 is  精确匹配,模糊匹配 使用regex...) public PageUrl getByUrl(String url) { return findOne(new Query(Criteria.where("url").is(url)),PageUrl.class); } 2. 查询多条数据:linkUrl.id 属于分级查询 public Lis

  • Java中关于XML的API

    简单介绍一下Java关于xml的API,这样大家看到了缩写就知道是干什么的了.水平有限,多多包涵. 1.JAXP(Java API for XML Parsing) 2.JAXB(Java API for XML Binding) 3.JAXM(Java API for XML Messaging) 4.JAX-RPC(Java API for XML-RPC) 1.JAXP定义了在Java中使用DOM, SAX, XSLT的通用的接口.这样在你的程序中你只要使用这些通用的接口,当你需要改变具体

  • 如何实现Java中一个简单的LinkedList

    LinkedList与ArrayList都是List接口的具体实现类.LinkedList与ArrayList在功能上也是大体一致,但是因为两者具体的实现方式不一致,所以在进行一些相同操作的时候,其效率也是有差别的. 对于抽象的数据结构--线性表而言,线性表分为两种,一种是顺序存储结构的顺序表,另一种是通过指针来描述其逻辑位置的链表. 针对于具体的Java实现: 顺序存储的顺序表是用数组来实现的,以数组为基础进行封装各种操作而形成的List为ArrayList 链表是用指针来描述其逻辑位置,在J

  • Java中使用开源库JSoup解析HTML文件实例

    HTML是WEB的核心,互联网中你看到的所有页面都是HTML,不管它们是由JavaScript,JSP,PHP,ASP或者是别的什么WEB技术动态生成的.你的浏览器会去解析HTML并替你去渲染它们.不过如果你需要自己在Java程序中解析HTML文档并查找某些元素,标签,属性或者检查某个特定的元素是否存在的话,那又该如何呢?如果你已经使用Java编程多年了,我相信你肯定试过去解析XML,也使用过类似DOM或者SAX这样的解析器,不过很有可能你从未进行过任何的HTML解析的工作.更讽刺的是,在Jav

  • Java中的Runnable,Callable,Future,FutureTask的比较

    Java中的Runnable,Callable,Future,FutureTask的比较 Java中存在Runnable.Callable.Future.FutureTask这几个与线程相关的类或者接口,在Java中也是比较重要的几个概念,我们通过下面的简单示例来了解一下它们的作用于区别. Runnable 其中Runnable应该是我们最熟悉的接口,它只有一个run()函数,用于将耗时操作写在其中, 该函数没有返回值 .然后使用某个线程去执行该runnable即可实现多线程,Thread类在调

  • java中Spring Security的实例详解

    java中Spring Security的实例详解 spring security是一个多方面的安全认证框架,提供了基于JavaEE规范的完整的安全认证解决方案.并且可以很好与目前主流的认证框架(如CAS,中央授权系统)集成.使用spring security的初衷是解决不同用户登录不同应用程序的权限问题,说到权限包括两部分:认证和授权.认证是告诉系统你是谁,授权是指知道你是谁后是否有权限访问系统(授权后一般会在服务端创建一个token,之后用这个token进行后续行为的交互). spring

  • obix协议在java中的配置和使用详解

    前言 本文主要给大家介绍的是关于obix协议在java中的配置和使用,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 什么是 oBIX? 简单来讲,obix是一种 XML 通讯协议,使用Http Request/Post方式进行数据通讯.所有数据通过可读字符进行传送,一个oBIX对象可以有唯一的一个URL识别. oBIX的实现原理 首先数据储存在Niagara的服务平台上,我们需要做的是从Niagara获取数据,并且储存在InfluxDB中.下面是实现的流程方法. 加粗 Ctr

  • 探索Java中的equals()和hashCode()方法_动力节点Java学院整理

    equals()和hashCode()区别?  equals():反映的是对象或变量具体的值,即两个对象里面包含的值--可能是对象的引用,也可能是值类型的值.  hashCode():计算出对象实例的哈希码,并返回哈希码,又称为散列函数.根类Object的hashCode()方法的计算依赖于对象实例的D(内存地址),故每个Object对象的hashCode都是唯一的:当然,当对象所对应的类重写了hashCode()方法时,结果就截然不同了. 之所以有hashCode方法,是因为在批量的对象比

随机推荐