怎么用Java对比两份数据,然后提出相同的数据。(JAVA自学者)

谢谢啦,这是我的实习作业,我只学过C++,C#,我的数据是TXT格式
2025-02-27 01:39:59
推荐回答(2个)
回答1:

/**
* Title:GetSameData.java
* Description:
* Copyright: Owner 2009
* CreateTime:Sep 10, 2009 10:57:14 AM
* @author Owner
* @data Sep 10, 2009
* @version 1.0
*/
package file;

import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
* Title: GetSameData
* Description:
* Company: LTGames
* @author Owner
* @date Sep 10, 2009
*/
public class GetSameData {

/**
* Map的key为Name, value为包含standard的文件名的数组。
*/
private Map> fileDataMap = new HashMap>();

/**
* 从指定的文件夹加载数据。
* Title: initFilesData
* Description:
* @author Owner
* @param folder
* @return
* @throws IOException
*/
public void initFilesData(String folderPath) throws IOException{
File folder = new File(folderPath);
if(folder.isFile()){
System.out.println("输入路径不是文件夹,请重新输入路径");
return;
}
File[] files = folder.listFiles();
for(File file : files){
loadData(file);
}
}

private void loadData(File file) throws IOException{
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
String lineString;
String[] lineDatas;
List dataList;
String fileName = file.getName();
while((lineString = bufferedReader.readLine()) != null){
lineDatas = lineString.split(",");
// 找到数据行
if(lineDatas.length == 15 && !lineDatas[0].equals("Ilmn ID")){
// 找到对应的list对象
if((dataList = fileDataMap.get(lineDatas[1])) == null){
dataList = new ArrayList();
}
// 将数据保存到list当中
dataList.add(new String[]{lineDatas[14], fileName});
// 将list保存到Map当中
fileDataMap.put(lineDatas[1], dataList);
}
}
}

public static void main(String[] args) {
GetSameData o = new GetSameData();
try {
o.initFilesData("d:/a");
Map> fileDataMap = o.getFileDataMap();
Iterator key = fileDataMap.keySet().iterator();
while(key.hasNext()){
String id = key.next();
if(fileDataMap.get(id).size() > 1){
for(String[] dates : fileDataMap.get(id)){
System.out.println(id + " " + dates[0] + " " + dates[1]);
}
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public Map> getFileDataMap() {
return fileDataMap;
}

}
已经按照你的数据个数修改完毕。

回答2:

你得说清楚你的数据格式是什么?