Java从数组中删除重复项?

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++;
         }
      }
   }


万千封印
浏览 368回答 3
3回答

SMILET

学习Set。学习它所花费的时间少于编写不使用它的时间。我会帮你的&nbsp;替换这个:String[] address = new String[100];有了这个:Set<String> addresses = new HashSet<String>();还有这个:address[i] = email;有了这个:addresses.add(email);你不再需要i了。你完成了。如果您想要打印出来:for&nbsp;(String&nbsp;address&nbsp;:&nbsp;addresses)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println&nbsp;(address);}这几乎涵盖了它。希望一切都自动排序?替换HashSet上面的TreeSet。现在去阅读这个优秀的教程,以便下次,你可以更快地自己完成所有这些。

天涯尽头无女友

把它们读成一个HashSet代替。这将为您处理重复项。Set<String>&nbsp;addresses&nbsp;=&nbsp;new&nbsp;HashSet<String>();addresses.add("a@a.com");addresses.add("a@a.com");addresses.add("a@a.com");System.out.println(addresses.size());会打印1。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java