gpt4 book ai didi

java - 用于两个非唯一值的数据结构

转载 作者:行者123 更新时间:2023-12-03 00:11:55 24 4
gpt4 key购买 nike

我面临着读取某个不唯一的数字和一个对于该数字来说也不是唯一的日期的问题。

该程序的计算量非常大,并且在我的IDE上执行得不太好,因此我面临着使用正确的数据结构的问题。

目前,我已经创建了一个索引,并将数字读入一个HashMap,将日期读入另一个HashMap 。然后,如果我需要它们,我就会匹配它们。然而,读取需要两个函数,每个函数都有一个 while 循环。

public HashMap<String,String> getEventDates() throws Exception {
String csvFile = "C:\\Users\\test.csv";

CSVReader reader = new CSVReader(new FileReader(csvFile), ';');
String [] line;
HashMap<String, String> eventMap = new HashMap<String, String>();

while ((line = reader.readNext()) != null) {
eventMap.put(line[15], line[13]);
}

reader.close();
return eventMap;
}

public HashMap<String,String> getNumberToEventDates() throws Exception {
String csvFile = "C:\\Users\\test.csv";

CSVReader reader = new CSVReader(new FileReader(csvFile), ';');
String [] line;
HashMap<String, String> isinMap = new HashMap<String, String>();

while ((line = reader.readNext()) != null) {
isinMap.put(line[15], line[4]);
}

reader.close();
return isinMap;
}

我应该使用哪种数据结构才能获得更好的性能?如何合并这两种方法?

感谢您的回答!

更新

哦,非常抱歉。

事实上,在每次 while 迭代之后 line[15] 这只是我创建的索引。

如何合并这两个函数?

最佳答案

我认为你不应该使用两个函数,因为从文件读取速度较慢,而是对函数进行修改,例如,

public HashMap<String, SimpleEntry<String,String>> getEventDatesAndNumber() throws Exception 
{
String csvFile = "C:\\Users\\test.csv";

CSVReader reader = new CSVReader(new FileReader(csvFile), ';');
String [] line;
HashMap<String, SimpleEntry<String,String>> eventMap = new HashMap<String, SimpleEntry<String,String>>();

while ((line = reader.readNext()) != null)
{
eventMap.put(line[15], new SimpleEntry<String , String>(line[13],line[4]));
}

reader.close();
return eventMap;
}

编辑 Tim B想法也不错,你有 MapKey 类,然后你将上面的方法更改为,

public HashMap<String, MapKey> getEventDatesAndNumber() throws Exception 

然后进行必要的更改。

关于java - 用于两个非唯一值的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21016294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com