gpt4 book ai didi

java - 从 csv 文件 JAVA 中删除用户

转载 作者:行者123 更新时间:2023-12-02 09:35:07 26 4
gpt4 key购买 nike

我有一个名为“test.csv”的文件,其中包含来自 path1(用户)的信息,并且我正在读取一个新文件“discardUsers”。我想要做的是将“test.csv”中的信息与文件“discardUsers”进行比较,并删除test.csv的d​​iscardUsers中存在的用户。我怎样才能做到呢?谢谢您的建议。

这就是我所拥有的:

public class Pruebas {

public static void main(String[] args) throws Exception {

try {
FileWriter newFile = null;
PrintWriter pw = null;
String csvDelimiter = ";";
String[] arrayD = null;
String[] arrayU = null;


File discardUsersFile = new File("path1");
File usersFile = new File("path2");

newFile = new FileWriter("C:\\Users\\user1\\Desktop\\test.csv");
pw = new PrintWriter(newFile);

List<String> discardUsers = Files.readAllLines(discardUsersFile.toPath(), StandardCharsets.UTF_8);
List<String> users = Files.readAllLines(usersFile.toPath(), StandardCharsets.UTF_8);

for (String line : users) {
arrayU = line.split(csvDelimiter);
pw.print(arrayU[0] + csvDelimiter + arrayU[1] + csvDelimiter + arrayU[2]);
}
if (null != newFile)
newFile.close();
} catch (Exception e2) {
e2.printStackTrace();
}

}
}

enter image description here

----- enter image description here

最佳答案

您可以创建一个Map<String, String>以 key :用户 ID、值:文件字符串和 Set<String> 的形式跟踪您的用户信息丢弃的用户 ID,然后使用 removeAll功能删除所有废弃的用户。

如果您当前的代码使用列表,您将需要每次扫描完整列表以检查您正在考虑的用户是否存在于丢弃列表中,如果不存在,则仅将其添加到结果文件中,例如:

for (String line : users) {
arrayU = line.split(csvDelimiter);
Boolean found = false;

for(String line : discardedUsers){
arrayD = line.split(csvDelimiter);
if(arrayU[INDEX_OF_USER_ID].equalsIgnoreCase(arrayD[INDEX_OF_USER_ID]){
found = true;
}
}

if(!found){
pw.print(arrayU[0] + csvDelimiter + arrayU[1] + csvDelimiter + arrayU[2]);
}
}

我真的建议选择 MapSet相反,方法如下:

//user ID, file line
Map<String, String> users = new HashMap<>();
for(String line: Files.readAllLines(usersFile.toPath(), StandardCharsets.UTF_8)){
users.add(line.split(csvDelimiter)[INDEX_OF_USER_ID], line);
}

//user ID
final Set<String> discardedUsers = new HashSet<>();
for(String line: Files.readAllLines(discardUsersFile.toPath(), StandardCharsets.UTF_8)){
discardedUsers.add(line.split(csvDelimiter)[INDEX_OF_USER_ID]);
}

if(users.keySet().removeAll(discardedUsers)){
for(String user : users){
pw.print(user);
}
}

关于java - 从 csv 文件 JAVA 中删除用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57586640/

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