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
。现在去阅读这个优秀的教程,以便下次,你可以更快地自己完成所有这些。

天涯尽头无女友
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
。
添加回答
举报
0/150
提交
取消