使用Map和List进行表格数据的存储

  • 使用HashMap存储一行数据
  • 将每一行数据存入ArrayList中
  • 使用keySet和entrySet分别进行数据的遍历
package com.wd.container;

import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * 测试使用Map和List共同使用下实现表格数据的存储
 * @author Steven
 *
 */
public class TestMapAndList{
	public static void main(String[] args) {
		HashMap<String, Object> row1 = new HashMap<>();
		row1.put("id", 123);
		row1.put("姓名", "qwer");
		row1.put("薪水", 20000);
		row1.put("入职日期",new GregorianCalendar(2000,5,6).toString());
		HashMap<String, Object> row2 = new HashMap<>();
		row2.put("id", 234);
		row2.put("姓名", "asfd");
		row2.put("薪水", 50000);
		row2.put("入职日期", new GregorianCalendar(1996,5,8).toString());
		HashMap<String, Object> row3 = new HashMap<>();
		row3.put("id",345);
		row3.put("姓名", "zxcv");
		row3.put("薪水", 62222);
		row3.put("入职日期", new GregorianCalendar(3000,6,888).toString());
		HashMap<String, Object> row4 = new HashMap<>();
		row4.put("id", 456);
		row4.put("姓名", "rtyu");
		row4.put("薪水", 6000);
		row4.put("入职日期", new GregorianCalendar(5222, 65, 222).toString());
		
		ArrayList<Map<String,Object>> arrayList = new ArrayList<>();
		arrayList.add(row1);
		arrayList.add(row2);
		arrayList.add(row3);
		arrayList.add(row4);
		
		/*
		 * 使用keySet进行遍历
		 */
		for(Map<String,Object> m:arrayList){
			Set<String> keySet = m.keySet();
			for(Iterator<String> i = keySet.iterator();i.hasNext();){
				String s=i.next();
				System.out.println(s+"="+m.get(s));
			}
		}
		
		/*
		 * 使用entrySet进行遍历
		 */
//		for(Map<String,Object> m:arrayList){
//			Set<Entry<String, Object>> entrySet = m.entrySet();
//			for(Iterator<Entry<String, Object>> i=entrySet.iterator();i.hasNext();){
//				System.out.println(i.next());
//			}
//		}
	}
}

实体类:

package com.wd.container;

import java.util.GregorianCalendar;

/**
 * 创建实体类进行数据存储
 */
public class User implements Comparable<User>{
	private int id;
	private String name;
	private double salary;
	private GregorianCalendar entryDate;
	public User(int id, String name, double salary, GregorianCalendar entryDate) {
		super();
		this.id = id;
		this.name = name;
		this.salary = salary;
		this.entryDate = entryDate;
	}
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getSalary() {
		return salary;
	}
	public void setSalary(double salary) {
		this.salary = salary;
	}
	public GregorianCalendar getEntryDate() {
		return entryDate;
	}
	public void setEntryDate(GregorianCalendar entryDate) {
		this.entryDate = entryDate;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", salary=" + salary + ", entryDate=" + entryDate + "]";
	}
	
	@Override
	public int compareTo(User o) {
		if(this.entryDate.getTimeInMillis()>o.entryDate.getTimeInMillis()){
			return 1;
		}else if(this.entryDate.getTimeInMillis()<o.entryDate.getTimeInMillis()){
			return -1;
		}else{
			return 0;
		}
	}
	
	
}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Java POI和MultivaluedMap实现表格数据的比对,可以按照以下步骤进行: 1. 使用POI读取两个Excel表格,将数据分别存储在两个List中。 2. 使用MultivaluedMapList中的数据以键值对的形式存储,其中键为表格中的主键,值为该行数据Map。 3. 遍历第一个List中的数据,逐比对其在第二个List中是否在相同主键的数据,如果在,则比对其它字段是否相同。 4. 如果在不同的字段,则将其记录下来,并将其添加到新的List中。 以下是示例代码: ``` // 读取Excel表格 Workbook workbook1 = WorkbookFactory.create(new File("first.xlsx")); Workbook workbook2 = WorkbookFactory.create(new File("second.xlsx")); // 读取表格中的数据 List<Map<String, Object>> list1 = new ArrayList<>(); List<Map<String, Object>> list2 = new ArrayList<>(); Sheet sheet1 = workbook1.getSheetAt(0); Sheet sheet2 = workbook2.getSheetAt(0); for (Row row : sheet1) { Map<String, Object> map = new HashMap<>(); map.put("id", row.getCell(0)); map.put("name", row.getCell(1)); map.put("age", row.getCell(2)); list1.add(map); } for (Row row : sheet2) { Map<String, Object> map = new HashMap<>(); map.put("id", row.getCell(0)); map.put("name", row.getCell(1)); map.put("age", row.getCell(2)); list2.add(map); } // 将数据存储到MultivaluedMap中 MultivaluedMap<String, Map<String, Object>> map1 = new ArrayListValuedHashMap<>(); MultivaluedMap<String, Map<String, Object>> map2 = new ArrayListValuedHashMap<>(); for (Map<String, Object> map : list1) { map1.put(map.get("id"), map); } for (Map<String, Object> map : list2) { map2.put(map.get("id"), map); } // 比对数据 List<Map<String, Object>> diffList = new ArrayList<>(); for (Map.Entry<String, List<Map<String, Object>>> entry : map1.entrySet()) { String key = entry.getKey(); List<Map<String, Object>> value1 = entry.getValue(); List<Map<String, Object>> value2 = map2.get(key); if (value2 != null) { for (Map<String, Object> map1 : value1) { for (Map<String, Object> map2 : value2) { if (!map1.equals(map2)) { Map<String, Object> diffMap = new HashMap<>(); diffMap.put("id", key); diffMap.put("fieldName", "name"); diffMap.put("value1", map1.get("name")); diffMap.put("value2", map2.get("name")); diffList.add(diffMap); } } } } } // 输出结果 for (Map<String, Object> map : diffList) { System.out.println(map); } ``` 注意:以上代码仅为示例,实际应用中还需要进行数据类型转换、异常处理等操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值