zoukankan      html  css  js  c++  java
  • java中的List记录是否完全匹配方法

    今天要说的是给List分组,然后用Map来封装,可能你看了以后还是有一些模糊。

    先看一下项目结构图:

    User类是一个VO类,主要逻辑还是在MapTestBak上面。

    运行效果:

    原理图:

    1.在starsList中有两组人,共三人

    2.在dolList中有一组人,共两人

    3.经过marched操作,最后匹配到一组人到result中。即第一组人。

    原理很简单。

    ===================================================

    源码部分:

    ===================================================

    /mapTest/src/com/b510/map/MapTestBak.java

      1 /**
      2  * 
      3  */
      4 package com.b510.map;
      5 
      6 import java.util.ArrayList;
      7 import java.util.HashMap;
      8 import java.util.List;
      9 import java.util.Map;
     10 
     11 /**
     12  * @author Hongten
     13  * @created Apr 28, 2014
     14  */
     15 public class MapTestBak {
     16 
     17     public static void main(String[] args) {
     18         mapTest();
     19     }
     20 
     21     /**
     22      * 
     23      */
     24     private static void mapTest() {
     25         // starsList
     26         List<User> starsList = getStarsList();
     27 
     28         // dolList
     29         List<User> dolList = getDolList();
     30 
     31         Map<String, List<User>> map = groupingHandler(starsList);
     32         // test
     33         groupingHandlerTest(map);
     34 
     35         System.out.println("======= group finished =======");
     36         List<Map<String, List<User>>> compareResultList = compare(dolList, map);
     37         if(null != compareResultList){
     38             System.out.println(compareResultList.size());
     39         }
     40     }
     41 
     42     /**
     43      * @param dolList
     44      * @param map
     45      */
     46     private static List<Map<String, List<User>>> compare(List<User> dolList, Map<String, List<User>> map) {
     47         List<Map<String, List<User>>>  tempList = new ArrayList<Map<String, List<User>>>();
     48         if (null != map) {
     49             for (String key : map.keySet()) {
     50                 List<User> u = map.get(key);
     51                 List comList = new ArrayList();
     52                 boolean comFlag = true;
     53                 for (User us : u) {
     54                     List comList1 = new ArrayList();
     55                     for (User ul : dolList) {
     56                         if (us.getGroupNO() == ul.getGroupNO() && us.getName().trim().equals(ul.getName().trim())) {
     57                             comList1.add(1);
     58                         } else {
     59                             comList1.add(0);
     60                         }
     61                     }
     62                     if (comList1.contains(1)) {
     63                         // name has existed.
     64                         comList.add(1);
     65                     } else {
     66                         comList.add(0);
     67                     }
     68                 }
     69                 if (comList.contains(0)) {
     70                     comFlag = false;
     71                 }
     72                 // print out the match result in the console.
     73                 printMatchResult(tempList, key, u, comFlag);
     74             }
     75         }else{
     76             System.out.println("map is null!");
     77         }
     78         return tempList;
     79     }
     80 
     81     /**
     82      * @param tempList
     83      * @param key
     84      * @param u
     85      * @param comFlag
     86      */
     87     private static void printMatchResult(List<Map<String, List<User>>> tempList, String key, List<User> u, boolean comFlag) {
     88         if (comFlag) {
     89             // do something
     90             System.out.println("group : " + key + " compared!
     Detail:");
     91             System.out.println("================");
     92             for (User ut : u) {
     93                 System.out.println(ut.getGroupNO() + ", " + ut.getName());
     94             }
     95             System.out.println("================");
     96             Map<String, List<User>> tempMap = new HashMap<String, List<User>>();
     97             tempMap.put(key, u);
     98             tempList.add(tempMap);
     99         } else {
    100             System.out.println("group : " + key + " NOT compared!");
    101         }
    102     }
    103 
    104     /**
    105      * @param map
    106      */
    107     private static void groupingHandlerTest(Map<String, List<User>> map) {
    108         if (null != map) {
    109             for (String key : map.keySet()) {
    110                 List<User> u = map.get(key);
    111                 for (User u1 : u) {
    112                     System.out.println(u1.getGroupNO() + ", " + u1.getName());
    113                 }
    114             }
    115         }
    116     }
    117 
    118     /**
    119      * @param starsList
    120      * @param map
    121      */
    122     private static Map<String, List<User>> groupingHandler(List<User> starsList) {
    123         Map<String, List<User>> map = new HashMap<String, List<User>>();
    124         for (User stars_user : starsList) {
    125             String no = String.valueOf(stars_user.getGroupNO());
    126             if (map.isEmpty()) {
    127                 List<User> l = new ArrayList<User>();
    128                 l.add(stars_user);
    129                 map.put(no, l);
    130             } else {
    131                 List<User> user_map = map.get(no);
    132                 if (null == user_map || "".equals(user_map)) {
    133                     List<User> l = new ArrayList<User>();
    134                     l.add(stars_user);
    135                     map.put(no, l);
    136                 } else {
    137                     List<User> l = map.get(no);
    138                     l.add(stars_user);
    139                     map.put(no, l);
    140                 }
    141             }
    142         }
    143         return map;
    144     }
    145 
    146     /**
    147      * @param dolList
    148      */
    149     private static List<User> getDolList() {
    150         List<User> dolList = new ArrayList<User>();
    151         User user_B1_dol = new User(1, "MRS KON");
    152         User user_A_dol = new User(1, "KON SUE");
    153         dolList.add(user_B1_dol);
    154         dolList.add(user_A_dol);
    155         return dolList;
    156     }
    157 
    158     /**
    159      * @param starsList
    160      */
    161     private static List<User> getStarsList() {
    162         List<User> starsList = new ArrayList<User>();
    163         User user_B1 = new User(1, "MRS KON");
    164         User user_A = new User(1, "KON SUE");
    165         User user_B2 = new User(2, "MRS KON");
    166         User user_C = new User(2, "LON MEI");
    167         starsList.add(user_B1);
    168         starsList.add(user_A);
    169         starsList.add(user_B2);
    170         starsList.add(user_C);
    171         return starsList;
    172     }
    173 }

    /mapTest/src/com/b510/map/User.java

     1 /**
     2  * 
     3  */
     4 package com.b510.map;
     5 
     6 /**
     7  * @author Hongten
     8  * @created Apr 28, 2014
     9  */
    10 public class User {
    11 
    12     private int groupNO;
    13     private String name;
    14 
    15     public int getGroupNO() {
    16         return groupNO;
    17     }
    18 
    19     public User(int groupNO, String name) {
    20         this.groupNO = groupNO;
    21         this.name = name;
    22     }
    23 
    24     public void setGroupNO(int groupNO) {
    25         this.groupNO = groupNO;
    26     }
    27 
    28     public String getName() {
    29         return name;
    30     }
    31 
    32     public void setName(String name) {
    33         this.name = name;
    34     }
    35 
    36 }

    我想要记录一下的是方法:compare(List<User> dolList, Map<String, List<User>> map)

     1 private static List<Map<String, List<User>>> compare(List<User> dolList, Map<String, List<User>> map) {
     2         List<Map<String, List<User>>>  tempList = new ArrayList<Map<String, List<User>>>();
     3         if (null != map) {
     4             for (String key : map.keySet()) {
     5                 List<User> u = map.get(key);
     6                 List comList = new ArrayList();
     7                 boolean comFlag = true;
     8                 for (User us : u) {
     9                     List comList1 = new ArrayList();
    10                     for (User ul : dolList) {
    11                         if (us.getGroupNO() == ul.getGroupNO() && us.getName().trim().equals(ul.getName().trim())) {
    12                             comList1.add(1);
    13                         } else {
    14                             comList1.add(0);
    15                         }
    16                     }
    17                     if (comList1.contains(1)) {
    18                         // name has existed.
    19                         comList.add(1);
    20                     } else {
    21                         comList.add(0);
    22                     }
    23                 }
    24                 if (comList.contains(0)) {
    25                     comFlag = false;
    26                 }
    27                 // print out the match result in the console.
    28                 printMatchResult(tempList, key, u, comFlag);
    29             }
    30         }else{
    31             System.out.println("map is null!");
    32         }
    33         return tempList;
    34     }

    在这个方法中,这里使用了两个List(即:comList, comList1)来记录是否完全匹配。

    ========================================================

    多读一些书,英语很重要。

    More reading,and english is important.

    I'm Hongten

    hongten

    ======================================================== 

  • 相关阅读:
    IO流遍历文件夹下所有文件问题
    java异常处理和自定义异常利用try和catch让程序继续下去(回来自己再写个例子试运行下)
    IO流读取文件内容时,出现空格的问题(未找到原因)
    查看程序运行时间的例子
    OOP和
    java语言的特点
    java三大版本解析
    关于培训的一些文章
    Android-自定义开关(ViewGroup版)
    Android-自定义开关(升级版)
  • 原文地址:https://www.cnblogs.com/hongten/p/java_list_map_marched.html
Copyright © 2011-2022 走看看