Java语言读取数据文件,数据文件分为2列,其中一列是字符串,存在重复,怎么加载到字典里来
不知道你这个问题是否已经解决, 如果还没有解决的话:答案:
可以使用Java自带的BufferedReader和FileReader来读取数据文件,将读取的内容存储到HashMap中。对于第二列可能存在重复数据的情况,可以将数据读入到HashMap时,将第二列数据作为key值,第一列数据作为value值存储到HashMap中,这样就可以方便地根据第二列数据进行查找和处理。代码如下:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
public class LoadData {
public static void main(String[] args) throws IOException {
// 读取数据文件
File file = new File("data.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
HashMap<String, Integer> map = new HashMap<>();
// 解析并存储内容到map中
while((line = reader.readLine()) != null) {
String[] arr = line.split(",");
if(arr.length == 2) { // 确认数据格式正确,防止出现异常
String key = arr[1]; // 第二列数据作为key值
int value = Integer.parseInt(arr[0]); // 第一列数据作为value值
if(!map.containsKey(key)) { // 如果key值不存在,则直接存入
map.put(key, value);
} else { // 如果key值已经存在,则需要判断是否需要更新value值
int oldValue = map.get(key);
if(value > oldValue) { // 取最大值
map.put(key, value);
}
}
}
}
reader.close();
// 输出结果
for(String key : map.keySet()) {
System.out.println(key + ": " + map.get(key));
}
}
}
对于数据文件格式不正确的情况,代码中做了一定的判断,确认数据格式正确后再进行存储。对于第二列数据重复的情况,代码中使用了HashMap来去除重复值。对于重复的key值,使用了一个简单的逻辑来判断是否需要更新value值,取第一列数据的最大值作为存储结果。最后输出字典中的结果。
给你个思路,每一行用split拆分两列数据,然后你可以看看第一列的字符串是否已经存在于字典,检查就用之前提过的containsKey来检查,存在就覆盖原有的值,不存在就作为键插入字典。
可以使用Java中的HashMap来加载数据文件中的数据,并将其中一列作为键(key),另一列作为值(value)。HashMap允许存储键值对,并且在插入时会自动去除重复的键。
下面是一个示例代码,演示了如何读取数据文件并将数据加载到HashMap中:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
public class DataFileLoader {
public static void main(String[] args) {
// 创建一个HashMap用于存储数据
HashMap<String, String> dataMap = new HashMap<>();
try {
// 读取数据文件
BufferedReader reader = new BufferedReader(new FileReader("data.txt"));
String line;
while ((line = reader.readLine()) != null) {
// 将每行数据按照分隔符进行拆分
String[] columns = line.split("\t");
if (columns.length >= 2) {
String key = columns[0];
String value = columns[1];
// 将数据存储到HashMap中
dataMap.put(key, value);
}
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
// 打印HashMap中的数据
for (String key : dataMap.keySet()) {
String value = dataMap.get(key);
System.out.println("Key: " + key + ", Value: " + value);
}
}
}
在上面的代码中,我们假设数据文件的每行由制表符分隔为两列,并且数据文件名为"data.txt"。您可以根据实际情况进行调整。代码将逐行读取数据文件,并使用split方法将每行数据拆分为键和值。然后,将键值对存储到HashMap中。最后,通过遍历HashMap来打印存储的数据。