gpt4 book ai didi

Java如何从ArrayList中删除重复项

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:42:05 26 4
gpt4 key购买 nike

我有一个包含规则和规则版本的 CSV 文件。 CSV 文件如下所示:

CSV FILE:
#RULENAME, RULEVERSION
RULE,01-02-01
RULE,01-02-02
RULE,01-02-34
OTHER_RULE,01-02-04
THIRDRULE, 01-02-04
THIRDRULE, 01-02-04

如您所见,1 条规则可以有 1 个或多个规则版本。我需要做的是读取这个 CSV 文件并将它们放入一个数组中。我目前正在使用以下脚本执行此操作:

 private static List<String[]> getRulesFromFile() {
String csvFile = "rulesets.csv";
BufferedReader br = null;
String line = "";
String delimiter = ",";

List<String[]> input = new ArrayList<String[]>();

try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
if (!line.startsWith("#")) {
String[] rulesetEntry = line.split(delimiter);
input.add(rulesetEntry);
}
}

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return input;
}

但我需要修改脚本,以便它以下列格式保存信息:

ARRAY (
=> RULE => 01-02-01, 01-02-02, 01-02-04
=> OTHER_RULE => 01-02-34
=> THIRDRULE => 01-02-01, 01-02-02
)

最好的方法是什么?多维数组?我如何确保它不会多次保存规则名称?

最佳答案

你应该使用不同的数据结构,例如像这样的 HashMap。

    HashMap<String, List<String>> myMap = new HashMap<>();

try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
if (!line.startsWith("#")) {
String[] parts = string.split(delimiter);
String key = parts[0];
String value = parts[1];
if (myMap.containsKey(key)) {
myMap.get(key).add(value);
} else {
List<String> values = new ArrayList<String>();
values.add(value);
myMap.put(key, values);
}
}
}

这应该有效!

关于Java如何从ArrayList中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34740495/

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