首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从字符串数组中删除重复值

如何从字符串数组中删除重复值
EN

Stack Overflow用户
提问于 2015-09-12 13:51:01
回答 3查看 103关注 0票数 1

我正在使用以下代码,这将在数组的每个位置上给出一个重复的值,因此建议我如何做

代码语言:javascript
复制
String sCurrentLine;
String username[] = new String[30];
String Arrival[] = new String[30];
String Departure[] = new String[30];
int var = 0, var2;
BufferedReader br = new BufferedReader(new FileReader("E:\\Shubham Projects\\Input.txt"));

while ((sCurrentLine = br.readLine()) != null) {
    String[] information = sCurrentLine.split(" ");
    var2 = information.length + var;
    for (int i = var; i < var2; i++) {
        System.out.println(i);
        username[i] = information[0];
        Arrival[i] = information[1];
        Departure[i] = information[2];
        var++;
    }

}
for (int i = 0; i < username.length; i++)
    System.out.println(username[i] + " " + Arrival[i] + " " + Departure[i]);

输入:

杰伊10:15 11:10 Jai 10:10 11:00 维鲁10:10 11:00 维鲁16:30 18:45 杰12:05 12:30 维鲁12:30 13:25 维鲁12:45 13:25 杰17:25 18:01

输出:

杰伊10:15 11:10 杰伊10:15 11:10 杰伊10:15 11:10 Jai 10:10 11:00 Jai 10:10 11:00 Jai 10:10 11:00 维鲁10:10 11:00 维鲁10:10 11:00 维鲁10:10 11:00 维鲁16:30 18:45 维鲁16:30 18:45 维鲁16:30 18:45 杰12:05 12:30 杰12:05 12:30 杰12:05 12:30 维鲁12:30 13:25 维鲁12:30 13:25 维鲁12:30 13:25 维鲁12:45 13:25 维鲁12:45 13:25 维鲁12:45 13:25 杰17:25 18:01 杰17:25 18:01 杰17:25 18:01 空空空 空空空 空空空 空空空 空空空 空空空

EN

回答 3

Stack Overflow用户

发布于 2015-09-12 13:55:02

您可以使用不允许重复的Set数据结构。

尝试:

代码语言:javascript
复制
    Set<String> resultSet = new HashSet<String>(Arrays.asList(username));

resultSet将有独特的字符串。

票数 2
EN

Stack Overflow用户

发布于 2015-09-12 15:03:31

内部for循环是导致问题的原因,因为您要从每一行抓取三次信息。

代码语言:javascript
复制
var2 = information.length + var;
for (int i = var; i < var2; i++) {
    System.out.println(i);
    username[i] = information[0];
    Arrival[i] = information[1];
    Departure[i] = information[2];
    var++;
}

例如:

杰伊10:15 11:10

当您阅读这一行时,var2将计算为3(假设var为0)。现在它将在for循环中运行三次,给出重复的条目。

Shriram的解决方案将修复此问题,Amila的响应将修复输入文件中重复条目的问题。

票数 1
EN

Stack Overflow用户

发布于 2015-09-12 13:55:50

使用set并打印结果,因为Set不允许重复。

使用以下逻辑

代码语言:javascript
复制
int count = 0;
        while ((sCurrentLine = br.readLine()) != null) {
            String[] information = sCurrentLine.split(" ");
            // for (int i = 0; i < information.length; i++) {
            username[count] = information[0];
            Arrival[count] = information[1];
            Departure[count] = information[2];
            // }
            count++;
        }

打印输出后,剩下的空值为空,但是您已经用30初始化了字符串数组。使用动态数组的集合类。我还说过要利用Set来避免重复

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32539577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档