java中的List记录是否完全匹配方法
来源:互联网 发布:网络出版服务规定 编辑:程序博客网 时间:2024/06/05 05:46
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!\n 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 map106 */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 starsList120 * @param map121 */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 dolList148 */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 starsList160 */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
0 0
- java中的List记录是否完全匹配方法
- 用 java 判断 括号是否完全匹配
- Java记录 -45- List的toString方法
- Java中的重载方法之匹配优先级
- java 比较两个无序list中的值是否一样
- 测试代码中的“{}”是否匹配
- java List.subList方法中的陷阱
- Java学习笔记-List中的addAll 方法
- Java数组复制到List中的方法
- java list.addAll方法的一些使用记录
- 括号是否匹配 java实现
- Java中的List和Map有什么区别?List, Set, Map是否继承自Collection接口?
- Java中的List和Map有什么区别?List, Set, Map是否继承自Collection接口?
- solr 搜索 的 完全匹配方法
- 完全掌握java中的
- 判断字符串中的字符是否完全不同
- java中的正则匹配
- java实现用栈解决一个串中的括号是否匹配
- 使用jackson解析时忽略新增字段
- uboot烧机
- Spring中的ThreadPoolTaskExecutor
- for循环动态创建表格
- 数据结构期末总结
- java中的List记录是否完全匹配方法
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- yii2 SUM用法
- V4L2常用命令标志符和结构体
- 一个随手指移动的自定义View和一个随手指移动的ImageView(附源码)
- wex5 教程 之 图文讲解 全局可观察变量与登陆状态全局控制
- 使用微软VS2015编写python代码
- AFNetworking 3.0 源码解读
- 如何取得Spring管理的bean