• 获取Map中指定key值进行处理方法


    工作中有遇到获取map中指定key的情况,一个一个指定获取效率低不说,代码看起来乱,现整理的方法,希望给大家点思路

    获取Map中指定key值进行处理封装方法

    1. public class CollectUtil {
    2. public static void main(String[] args) {
    3. Map<String,Object> map = new HashMap<>();
    4. map.put("aa","11");
    5. map.put("premium","22");
    6. map.put("num","33");
    7. List<String> keys = Arrays.asList("aa","bb","dd");
    8. //System.out.println(getMapCollection(map,keys));
    9. System.out.println(getMapCollection(map,DemoEntity.class));
    10. }
    11. /**
    12. * 根据keys获取map中指定key存入新map
    13. * @param maps
    14. * @param keys
    15. * @return
    16. * @param
    17. * @param
    18. */
    19. public static <K, V> Map<K,V> getMapCollection(Map<K,V> maps, Iterable<K> keys){
    20. Map<K,V> filterMaps = new HashMap<>();
    21. if(maps != null && !maps.isEmpty() && keys != null){
    22. keys.forEach(key -> Optional.ofNullable(maps.get(key)).ifPresent(value -> filterMaps.put(key,value)));
    23. }
    24. return filterMaps;
    25. }
    26. /**
    27. * 根据clazz实体类中属性获取map中对应key,存入新map
    28. * @param maps
    29. * @param clazz
    30. * @return
    31. * @param
    32. * @param
    33. */
    34. public static <K, V> Map<K,V> getMapCollection(Map<K,V> maps, Class<?> clazz){
    35. Map<K,V> filterMaps = new HashMap<>();
    36. Field[] fields = clazz.getDeclaredFields();
    37. if(maps != null && !maps.isEmpty() && fields != null){
    38. Arrays.stream(fields).forEach(field -> {
    39. String key = field.getName();
    40. Optional.ofNullable(maps.get(key)).ifPresent(value -> filterMaps.put((K)key, (V) value));
    41. });
    42. }
    43. return filterMaps;
    44. }
    45. /**
    46. * 根据keys获取map中指定key的值存如list
    47. * @param map
    48. * @param keys
    49. * @return
    50. * @param
    51. * @param
    52. */
    53. public static <K, V> List<V> getListCollection(Map<K, V> map, Iterable<K> keys) {
    54. List<V> result = new ArrayList<>();
    55. if (map != null && !map.isEmpty() && keys != null) {
    56. keys.forEach(key -> Optional.ofNullable(map.get(key)).ifPresent(result::add));
    57. }
    58. return result;
    59. }
    60. public static <K, V> List<V> getOrderCollection(Map<K, V> map, Iterable<K> keys, Comparator<V> comparator) {
    61. Objects.requireNonNull(comparator);
    62. List<V> result = getListCollection(map, keys);
    63. Collections.sort(result, comparator);
    64. return result;
    65. }
    66. }
    67. @Data
    68. public class DemoEntity {
    69. private int id;
    70. private Long premium;
    71. private String num;
    72. }

  • 相关阅读:
    编码体系与规范
    el-date-picker 禁止选择当前年之前或者之后的年份
    安装 Android Studio 2024.1.1.6(Koala SDK35)和过程问题解决
    B31SE Image Processing
    Mybatis如何实现一个高效的批量插入操作呢?
    pytest-fixture固件的使用
    STL学习笔记之容器
    服务为中心,产品为素材,与消费者双向交流的经销存经营管理软件
    MATLAB程序设计与应用 3.3 矩阵求值
    代码随想录二刷|两两交换链表中的节点
  • 原文地址:https://blog.csdn.net/m0_37987151/article/details/134074440