当前位置: 首页 > 知识库问答 >
问题:

在csv文件中的字符串数组中显示重复项(Java)

韩乐湛
2023-03-14
id,birthday,name,sex, first name

我现在希望程序显示我在每一列(例如名称)有哪些重复。就像有两个同名的人。但是无论我从Internet上找到什么,我都只能显示重复的行(比如如果名字和名字是相同的)。以下是我目前得到的信息:

package javacvs;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

/**
 *
 * @author Tobias
 */
public class main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String csvFile = "/Users/Tobias/Desktop/PatDaten/123.csv";
        String line = "";
        String cvsSplitBy = ",";

        try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {

            while ((line = br.readLine()) != null) {

                // use comma as separator
                String[] patDaten = line.split(cvsSplitBy);


for (int i = 0; i < patDaten.length-1; i++)
        {
            for (int j = i+1; j < patDaten.length; j++)
            {
                if( (patDaten[i].equals(patDaten[j])) && (i != j) )
                {
                    System.out.println("Duplicate Element is : "+patDaten[j]);
                }
            }
        }
                }
            }catch (IOException e) {
            e.printStackTrace();
        }
        }

    }

(我更改了csv的名称,因为它包含机密数据)

共有1个答案

弘思聪
2023-03-14

这里真正的事情:停止思考“低级”。好的OOP是关于创建有用的抽象。

换句话说:您的第一步应该是创建一个表示一行内容的有意义的类定义,现在我们将其称为Person类。然后你把你更多的关注点分开:

  • 创建一个类/方法,它只读取CSV文件,并每行创建一个Person对象
  • 创建一个有意义的数据结构,告诉您有关重复项的信息
Map<String, List<Person>> personsByName = new HashMap<>();
for (Person p : persons) {
  List<Person> personsForName = personsByName.get(p.getName());
  if (personsByName == null) {
    personsForName = new ArrayList<>();
    personsByName.put(p.getName(), personsForName);
  }
  personsForName.add(p);
}
 类似资料:
  • 问题内容: 我正在制作一个基于Java中字符串处理的程序,其中需要从字符串数组中删除重复的字符串。在此程序中,所有字符串的大小均相同。 “数组”是一个字符串数组,其中包含许多字符串,其中两个字符串彼此相似。因此,使用下面的代码,必须删除重复的字符串,但是不能删除。 如何删除重复的字符串? 我正在使用以下代码。 问题答案: 这会工作 或者只使用a 而不是数组。

  • 我正在用Java制作一个基于字符串处理的程序,在这个程序中,我需要从字符串数组中删除重复的字符串。在这个程序中,所有字符串的大小都是相同的。 “数组”是一个字符串数组,包含许多字符串,其中两个字符串彼此相似。因此,使用下面的代码必须删除重复的字符串,但不会删除。 如何删除重复字符串? 我正在使用以下代码。

  • 问题内容: 非常简单的问题,但是由于某种原因,在谷歌搜索10分钟后,我在任何地方都找不到答案。使用JavaScript打印时如何显示转义符? 例: 给出: 当我要它给: 问题答案: 如果你的目标是 并以字符串文字形式输出它包含的内容,您可以使用: 添加外引号(至少在Chrome的实现中),但是其中的内容是字符串文字(是的,这有点令人困惑)。 接受您提供的内容(在这种情况下为字符串),并返回包含该值

  • 我试图遍历一个字符串以删除重复的字符。 例如,字符串应该变成,字符串应该变成

  • 给定一串十六进制字符,我想从这些字符中创建一个字节数组。例如,给定字符串“1A2B3C”,我希望我的数组包含0x1A、0x2B、0x3C。 我有它使用下面的代码工作,但希望看到一个更有效的方式这样做。 (此时已检查字符串长度等)。

  • 好的,所以我查询DB并从IP地址列表生成一个数组: 返回的数组看起来像这样: 但是如果我想找到上面列表中的第一个或任何IP,出于某种原因,它什么也找不到: 我到底做错了什么?