为了账号安全,请及时绑定邮箱和手机立即绑定

Java从数组中删除重复项?

Java从数组中删除重复项?

万千封印 2019-09-13 12:10:10
Java从数组中删除重复项?我应该在包含许多不同电子邮件地址的文件中读取并使用数组打印出来。问题是我需要消除重复的电子邮件。我能够让我的try / catch工作并打印出电子邮件地址。但是,我不知道如何删除重复项。我不了解哈希码或如何使用哈希码Set。任何援助将不胜感激。这是我到目前为止:import java.util.Scanner;import java.io.*;public class Duplicate {    public static void main(String[] args) {       Scanner keyboard = new Scanner(System.in);       System.out.println("Enter file name: ");       String fileName = keyboard.nextLine();       if (fileName.equals("")) {          System.out.println("Error: User did not specify a file name.");       } else {          Scanner inputStream = null;          try {             inputStream = new Scanner(new File(fileName));          } catch (FileNotFoundException e) {             System.out.println("Error: " + fileName + " does not exist.");             System.exit(0);          }          String[] address = new String[100];          int i = 0;          while (inputStream.hasNextLine()) {             String email = inputStream.nextLine();             // System.out.println(email);             address[i] = email;             System.out.println(address[i]);             i++;          }       }    }
查看完整描述

3 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

学习Set。学习它所花费的时间少于编写不使用它的时间。

我会帮你的 替换这个:

String[] address = new String[100];

有了这个:

Set<String> addresses = new HashSet<String>();

还有这个:

address[i] = email;

有了这个:

addresses.add(email);

你不再需要i了。

你完成了。如果您想要打印出来:

for (String address : addresses) {
     System.out.println (address);}

这几乎涵盖了它。希望一切都自动排序?替换HashSet上面的TreeSet。现在去阅读这个优秀的教程,以便下次,你可以更快地自己完成所有这些。



查看完整回答
反对 回复 2019-09-16
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

把它们读成一个HashSet代替。这将为您处理重复项。

Set<String> addresses = new HashSet<String>();addresses.add("a@a.com");addresses.add("a@a.com");addresses.add("a@a.com");System.out.println(addresses.size());

会打印1


查看完整回答
反对 回复 2019-09-16
  • 3 回答
  • 0 关注
  • 367 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信