• java集合中寻找指定对象的集合或对象数据


    package com.xiniunet.web.tool;

    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.util.ArrayList;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Set;

    /**
    * Created by xn on 15/7/22.
    */
    public class ListUtil {

    /**
    * 判断集合中是否存在该对象的数据
    * @param list
    * @param value
    * @param <T>
    * @return 返回在集合中首次匹配到的对象数据
    */
    public static <T> T matchObject(List<T> list,T value) {
    if(list == null || list.size() == 0 || value == null){
    return null;
    }
    for(T t : list) {
    if(value.equals(t)){
    return t;
    }
    }
    return null;
    }

    /**
    * 判断集合中是否存在该长整型数值的数据对象
    * @param list
    * @param id
    * @param <T>
    * @return 返回首次符合长整型数值的数据对象
    */
    public static <T> T matchObject(List<T> list,Long id) {
    if(list == null || list.size() == 0 || id == null){
    return null;
    }
    Class clazz = list.get(0).getClass();
    Method method = null;
    try {
    method = clazz.getMethod("getId");
    } catch (NoSuchMethodException e) {
    e.printStackTrace();
    }
    for(T t : list) {
    try {
    if(id.equals(method.invoke(t))){
    return t;
    }
    } catch (IllegalAccessException | InvocationTargetException e) {
    e.printStackTrace();
    }
    }
    return null;
    }

    /**
    * 判断集合中是否存在该长整型数值的数据对象
    * @param list
    * @param id
    * @param <T>
    * @return 返回符合长整型数值的数据集合对象
    */
    public static <T> List<T> matchList(List<T> list,Long id) {

    List<T> result = new ArrayList();
    if(list == null || list.size() == 0 || id == null){
    return result;
    }
    Class clazz = list.get(0).getClass();
    Method method = null;
    try {
    method = clazz.getMethod("getId");
    } catch (NoSuchMethodException e) {
    e.printStackTrace();
    }

    for(T t : list) {
    try {
    if(id.equals(method.invoke(t))){
    result.add(t);
    }
    } catch (IllegalAccessException | InvocationTargetException e) {
    e.printStackTrace();
    }
    }
    return result;
    }

    /**
    * 判断集合中是否存在该长整型数据集合的集合数据
    * @param list
    * @param ids
    * @param <T>
    * @return 返回符合长整型数值的数据集合对象
    */
    public static <T> List<T> matchList(List<T> list,List<Long> ids) {

    List<T> result = new ArrayList();
    if(list == null || list.size() == 0 || ids == null || ids.size() == 0){
    return result;
    }
    Class clazz = list.get(0).getClass();
    Method method = null;
    try {
    method = clazz.getMethod("getId");
    } catch (NoSuchMethodException e) {
    e.printStackTrace();
    }

    for(Long id : ids){
    for(T t : list) {
    try {
    if(id.equals(method.invoke(t))){
    result.add(t);
    }
    } catch (IllegalAccessException | InvocationTargetException e) {
    e.printStackTrace();
    }
    }
    }

    return result;
    }

    /**
    * 循环判断集合中是否存在长整型数据集合中的数据(每个对象只匹配第一次取到的值)
    * @param list
    * @param ids
    * @param <T>
    * @return 返回符合长整型数据集合中的集合对象(每个对象只匹配第一次取到的值)
    */
    public static <T> List<T> matchBatchObject(List<T> list,List<Long> ids) {

    List<T> result = new ArrayList();
    if(list == null || list.size() == 0 || ids == null || ids.size() == 0){
    return result;
    }
    Class clazz = list.get(0).getClass();
    Method method = null;
    try {
    method = clazz.getMethod("getId");
    } catch (NoSuchMethodException e) {
    e.printStackTrace();
    }
    for(Long id :ids){
    for(T t : list) {
    try {
    if(id.equals(method.invoke(t))){
    result.add(t);
    break;
    }
    } catch (IllegalAccessException | InvocationTargetException e) {
    e.printStackTrace();
    }
    }
    }
    return result;
    }

    /**
    * 判断集合中是否存在该对象相匹配的对象数据
    * @param list
    * @param fieldName
    * @param id
    * @param <T>
    * @param <K>
    * @return 返回符合对象相匹配的对象数据
    */
    public static <T,K> T matchObject(List<T> list,String fieldName,K id) {
    if(list == null || list.size() == 0 || id == null){
    return null;
    }
    Class clazz = list.get(0).getClass();
    Method method = null;
    try {
    method = clazz.getMethod("get" + Character.isUpperCase(fieldName.charAt(0)));
    } catch (NoSuchMethodException e) {
    e.printStackTrace();
    }
    for(T t : list) {
    try {
    if(id.equals(method.invoke(t))){
    return t;
    }
    } catch (IllegalAccessException | InvocationTargetException e) {
    e.printStackTrace();
    }
    }
    return null;
    }

    /**
    * 判断集合中是否存在该对象相匹配的对象数据
    * @param list
    * @param fieldName
    * @param id
    * @param <T>
    * @param <K>
    * @return 返回符合对象相匹配的集合对象
    */
    public static <T,K> List<T> matchList(List<T> list,String fieldName,K id) {

    List<T> result = new ArrayList();
    if(list == null || list.size() == 0 || id == null){
    return result;
    }
    Class clazz = list.get(0).getClass();
    Method method = null;
    try {
    method = clazz.getMethod("get" + Character.isUpperCase(fieldName.charAt(0)));
    } catch (NoSuchMethodException e) {
    e.printStackTrace();
    }

    for(T t : list) {
    try {
    if(id.equals(method.invoke(t))){
    result.add(t);
    }
    } catch (IllegalAccessException | InvocationTargetException e) {
    e.printStackTrace();
    }
    }
    return result;
    }

    /**
    * 循环判断集合中是否存在该对象相匹配的对象数据
    * @param list
    * @param fieldName
    * @param ids
    * @param <T>
    * @param <K>
    * @return 返回符合对象相匹配的集合对象
    */
    public static <T,K> List<T> matchList(List<T> list,String fieldName,List<K> ids) {

    List<T> result = new ArrayList();
    if(list == null || list.size() == 0 || ids == null || ids.size() == 0){
    return result;
    }
    Class clazz = list.get(0).getClass();
    Method method = null;
    try {
    method = clazz.getMethod("get" + Character.isUpperCase(fieldName.charAt(0)));
    } catch (NoSuchMethodException e) {
    e.printStackTrace();
    }

    for(K id : ids){
    for(T t : list) {
    try {
    if(id.equals(method.invoke(t))){
    result.add(t);
    }
    } catch (IllegalAccessException | InvocationTargetException e) {
    e.printStackTrace();
    }
    }
    }
    return result;
    }

    /**
    * 判断集合中是否存在该对象相匹配的对象数据(每个对象只匹配第一次取到的值)
    * @param list
    * @param fieldName
    * @param ids
    * @param <T>
    * @param <K>
    * @return 返回符合对象相匹配的集合对象(每个对象只匹配第一次取到的值)
    */
    public static <T,K> List<T> matchBatchObject(List<T> list,String fieldName,List<K> ids) {

    List<T> result = new ArrayList();
    if(list == null || list.size() == 0 || ids == null || ids.size() == 0){
    return result;
    }
    Class clazz = list.get(0).getClass();
    Method method = null;
    try {
    method = clazz.getMethod("get" + Character.isUpperCase(fieldName.charAt(0)));
    } catch (NoSuchMethodException e) {
    e.printStackTrace();
    }
    for(K id :ids){
    for(T t : list) {
    try {
    if(id.equals(method.invoke(t))){
    result.add(t);
    break;
    }
    } catch (IllegalAccessException | InvocationTargetException e) {
    e.printStackTrace();
    }
    }
    }
    return result;
    }

    public static <T> List<Long> getKeyList(List<T> list) {

    List<Long> result = new ArrayList();
    if(list == null || list.size() == 0){
    return result;
    }
    Class clazz = list.get(0).getClass();
    Method method = null;
    try {
    method = clazz.getMethod("getId");
    } catch (NoSuchMethodException e) {
    e.printStackTrace();
    }

    Set<Long> set = new HashSet<>();
    for(T t : list) {
    try {
    Long id = (Long)method.invoke(t);
    if(id != null){
    set.add(id);
    }
    } catch (IllegalAccessException | InvocationTargetException e) {
    e.printStackTrace();
    }
    }
    for(Long id : set){
    result.add(id);
    }
    return result;
    }

    public static <T,K> List<K> getKeyList(List<T> list,String fieldName) {

    List<K> result = new ArrayList();
    if(list == null || list.size() == 0){
    return result;
    }
    Class clazz = list.get(0).getClass();
    Method method = null;
    try {
    method = clazz.getMethod("get" + Character.isUpperCase(fieldName.charAt(0)));
    } catch (NoSuchMethodException e) {
    e.printStackTrace();
    }
    Set<K> set = new HashSet<>();

    for(T t : list) {
    try {
    K k = (K)method.invoke(t);
    if(k != null){
    set.add(k);
    }
    } catch (IllegalAccessException | InvocationTargetException e) {
    e.printStackTrace();
    }
    }
    for(K k : set){
    result.add(k);
    }
    return result;
    }
    }
  • 相关阅读:
    mysql设置外网访问
    c# 导出excel的两种常见方法
    mysql记录
    nginx配置文件nginx.conf简单介绍
    nginx编译安装之-./configure 参数详解
    Springboot中Filter的使用
    Spring Boot中@ConditionalOnProperty使用详解
    spring boot2 配置 FastJsonHttpMessageConverter 不起作用
    springBoot yaml属性配置文件使用详解
    Eclipse离线安装Java Decompiler插件(反编译)
  • 原文地址:https://www.cnblogs.com/Dream-Lasting/p/10167408.html
Copyright © 2020-2023  润新知