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

先看一下项目结构图:

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

运行效果:

原理图:

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

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

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

原理很简单。

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

源码部分:

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

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

 /**
*
*/
package com.b510.map; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; /**
* @author Hongten
* @created Apr 28, 2014
*/
public class MapTestBak { public static void main(String[] args) {
mapTest();
} /**
*
*/
private static void mapTest() {
// starsList
List<User> starsList = getStarsList(); // dolList
List<User> dolList = getDolList(); Map<String, List<User>> map = groupingHandler(starsList);
// test
groupingHandlerTest(map); System.out.println("======= group finished =======");
List<Map<String, List<User>>> compareResultList = compare(dolList, map);
if(null != compareResultList){
System.out.println(compareResultList.size());
}
} /**
* @param dolList
* @param map
*/
private static List<Map<String, List<User>>> compare(List<User> dolList, Map<String, List<User>> map) {
List<Map<String, List<User>>> tempList = new ArrayList<Map<String, List<User>>>();
if (null != map) {
for (String key : map.keySet()) {
List<User> u = map.get(key);
List comList = new ArrayList();
boolean comFlag = true;
for (User us : u) {
List comList1 = new ArrayList();
for (User ul : dolList) {
if (us.getGroupNO() == ul.getGroupNO() && us.getName().trim().equals(ul.getName().trim())) {
comList1.add(1);
} else {
comList1.add(0);
}
}
if (comList1.contains(1)) {
// name has existed.
comList.add(1);
} else {
comList.add(0);
}
}
if (comList.contains(0)) {
comFlag = false;
}
// print out the match result in the console.
printMatchResult(tempList, key, u, comFlag);
}
}else{
System.out.println("map is null!");
}
return tempList;
} /**
* @param tempList
* @param key
* @param u
* @param comFlag
*/
private static void printMatchResult(List<Map<String, List<User>>> tempList, String key, List<User> u, boolean comFlag) {
if (comFlag) {
// do something
System.out.println("group : " + key + " compared!\n Detail:");
System.out.println("================");
for (User ut : u) {
System.out.println(ut.getGroupNO() + ", " + ut.getName());
}
System.out.println("================");
Map<String, List<User>> tempMap = new HashMap<String, List<User>>();
tempMap.put(key, u);
tempList.add(tempMap);
} else {
System.out.println("group : " + key + " NOT compared!");
}
} /**
* @param map
*/
private static void groupingHandlerTest(Map<String, List<User>> map) {
if (null != map) {
for (String key : map.keySet()) {
List<User> u = map.get(key);
for (User u1 : u) {
System.out.println(u1.getGroupNO() + ", " + u1.getName());
}
}
}
} /**
* @param starsList
* @param map
*/
private static Map<String, List<User>> groupingHandler(List<User> starsList) {
Map<String, List<User>> map = new HashMap<String, List<User>>();
for (User stars_user : starsList) {
String no = String.valueOf(stars_user.getGroupNO());
if (map.isEmpty()) {
List<User> l = new ArrayList<User>();
l.add(stars_user);
map.put(no, l);
} else {
List<User> user_map = map.get(no);
if (null == user_map || "".equals(user_map)) {
List<User> l = new ArrayList<User>();
l.add(stars_user);
map.put(no, l);
} else {
List<User> l = map.get(no);
l.add(stars_user);
map.put(no, l);
}
}
}
return map;
} /**
* @param dolList
*/
private static List<User> getDolList() {
List<User> dolList = new ArrayList<User>();
User user_B1_dol = new User(1, "MRS KON");
User user_A_dol = new User(1, "KON SUE");
dolList.add(user_B1_dol);
dolList.add(user_A_dol);
return dolList;
} /**
* @param starsList
*/
private static List<User> getStarsList() {
List<User> starsList = new ArrayList<User>();
User user_B1 = new User(1, "MRS KON");
User user_A = new User(1, "KON SUE");
User user_B2 = new User(2, "MRS KON");
User user_C = new User(2, "LON MEI");
starsList.add(user_B1);
starsList.add(user_A);
starsList.add(user_B2);
starsList.add(user_C);
return starsList;
}
}

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

 /**
*
*/
package com.b510.map; /**
* @author Hongten
* @created Apr 28, 2014
*/
public class User { private int groupNO;
private String name; public int getGroupNO() {
return groupNO;
} public User(int groupNO, String name) {
this.groupNO = groupNO;
this.name = name;
} public void setGroupNO(int groupNO) {
this.groupNO = groupNO;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} }

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

 private static List<Map<String, List<User>>> compare(List<User> dolList, Map<String, List<User>> map) {
List<Map<String, List<User>>> tempList = new ArrayList<Map<String, List<User>>>();
if (null != map) {
for (String key : map.keySet()) {
List<User> u = map.get(key);
List comList = new ArrayList();
boolean comFlag = true;
for (User us : u) {
List comList1 = new ArrayList();
for (User ul : dolList) {
if (us.getGroupNO() == ul.getGroupNO() && us.getName().trim().equals(ul.getName().trim())) {
comList1.add(1);
} else {
comList1.add(0);
}
}
if (comList1.contains(1)) {
// name has existed.
comList.add(1);
} else {
comList.add(0);
}
}
if (comList.contains(0)) {
comFlag = false;
}
// print out the match result in the console.
printMatchResult(tempList, key, u, comFlag);
}
}else{
System.out.println("map is null!");
}
return tempList;
}

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

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

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

More reading,and english is important.

I'm Hongten

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

java中的List记录是否完全匹配方法的更多相关文章

  1. JAVA 中LinkedHashMap要点记录

    JAVA 中LinkedHashMap要点记录 构造函数中可能出现的几个参数说明如下: 1.initialCapacity 初始容量大小,使用无参构造方法时,此值默认是16 2.loadFactor ...

  2. (转载)java中判断字符串是否为数字的方法的几种方法

    java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < ...

  3. Java中获取键盘输入值的三种方法

    Java中获取键盘输入值的三种方法     Java程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值 ...

  4. Java中Date和Calender类的使用方法

    查看文章     Java中Date和Calender类的使用方法 2009-10-04 20:49 Date和Calendar是Java类库里提供对时间进行处理的类,由于日期在商业逻辑的应用中占据着 ...

  5. JAVA中文件与Byte数组相互转换的方法

    JAVA中文件与Byte数组相互转换的方法,如下: public class FileUtil { //将文件转换成Byte数组 public static byte[] getBytesByFile ...

  6. java中什么是bridge method(桥接方法)

    java中什么是bridge method(桥接方法) https://blog.csdn.net/z69183787/article/details/81115524

  7. slf4j+log4j在Java中实现日志记录

    小Alan今天来跟大家聊聊开发中既简单又常用但必不可少的一样东西,那是什么呢?那就是日志记录,日志输出,日志保存. 后面就统一用日志记录四个字来形容啦. 日志记录是项目的开发中必不可少的一个环节,特别 ...

  8. JAVA 中日志的记录于使用

    java中常用的日志框架 日志接口 Commons Logging Apache Commons Logging是一个基于Java的日志记录实用程序,是用于日志记录和其他工具包的编程模型.它通过其他一 ...

  9. JAVA中一些需要记录的知识点(进阶部分)···持续更新

    1.JAVA中的相对路径 file = new file("")与file = new file("./")方式相同,该路径为整个project的根目录(实际上 ...

随机推荐

  1. poj 2262【素数表的应用---判断素数】【哈希】

    Goldbach's Conjecture Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 35214   Accepted: ...

  2. lvs+keepalived 负载均衡

    LVS是一个开源的软件,可以实现LINUX平台下的简单负载均衡.LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器.目前有三种IP负 载均衡技术(VS/NAT.VS/T ...

  3. hp,Qlogic,Brocade光纖卡查看方式

    查看光纖卡類型 # lspci| grep Fibre 1. NHB棟 光纖卡brocade /sys/class/fc_host 查看光纖卡是否加載,若無,打驅動brocade_adapter_so ...

  4. 5-04用Sql语句创建表

    用Sql语句创建表的基本语法: USE E_Market--指向当前所操作的数据库 GO CREATE TABLE CommoditySort--创建表的名字 { sortID int IDENTIT ...

  5. 限制非安全IP访问

    这个是一个检测ip是否非法的php函数,适应于白名单,黑名单功能开发,主要场景应用于:api来源限制,访问限制等. /** * 安全IP检测,支持IP段检测 * @param string $ip 要 ...

  6. hdu 1517 博弈 **

    博弈题: 题意:2 个人玩游戏,从 1 开始,轮流对数进行累乘,直到超过一个指定的值. 解题思路:如果输入是 2 ~ 9 ,因为Stan 是先手,所以Stan 必胜如果输入是 10~18 ,因为Oll ...

  7. 在source insight中集成astyle

    转自:http://www.cnblogs.com/xuxm2007/archive/2013/04/06/3002390.html 好吧,我有代码格式的强迫症,代码不整齐,我看的都头疼,之前一直喜欢 ...

  8. ICP 算法步骤

    The Iterative Closest Point (ICP) is an algorithm employed to match two surface representations, suc ...

  9. Vs2010工具栏显示“开始执行“按钮

    转载来源:http://blog.csdn.net/fromhj/article/details/8795047 前言 在用visual studio 2010的时候,要运行程序,可以使用 1.菜单- ...

  10. HDU 3727 Jewel 可持久化线段树

    Jewel Problem Description   Jimmy wants to make a special necklace for his girlfriend. He bought man ...