本文旨在介绍如何使用Java查找数组中的重复元素,并将其清晰地显示在消息对话框中。我们将通过示例代码,详细讲解查找重复项的逻辑,以及如何有效地组织和展示结果,最终实现对多个重复客户信息的友好展示。
核心思路是将问题分解为几个独立的函数,每个函数负责一个特定的任务,使代码更易于理解和维护。
查找重复项函数:
该函数接收一个整数数组作为输入,并返回一个包含重复元素的列表。为了避免重复计算,可以使用 HashSet 来记录已经找到的重复元素。
import javax.swing.JOptionPane;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class DuplicateFinder {
public static List findDuplicates(int[] arr) {
Set seen = new HashSet<>();
Set duplicates = new HashSet<>();
List result = new ArrayList<>();
for (int num : arr) {
if (!seen.add(num)) {
duplicates.add(num);
}
}
result.addAll(duplicates);
return result;
} 此函数使用 HashSet 的 add() 方法的特性。add() 方法在添加新元素时返回 true,如果元素已经存在则返回 false。通过检查返回值,可以判断元素是否重复。
格式化输出函数:
该函数接收重复元素列表,并将其格式化为易于阅读的字符串。
public static String formatDuplicates(Listduplicates) { if (duplicates.isEmpty()) { return "HONEST CUSTOMERS"; } else { StringBuilder sb = new StringBuilder("Duplicates: "); for (int i = 0; i < duplicates.size(); i++) { sb.append("Customer #").append(duplicates.get(i)); if (i < duplicates.size() - 1) { sb.append(", "); } } return sb.toString(); } }
使用 StringBuilder 可以更有效地构建字符串,尤其是在循环中。
显示消息对话框函数:
该函数接收格式化后的字符串,并使用 JOptionPane 显示消息对话框。
public static void showMessage(String message) {
JOptionPane.showMessageDialog(null, message);
}将上述函数整合到 main 方法中,形成一个完整的示例程序。
import javax.swing.JOptionPane;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class DuplicateFinder {
public static List findDuplicates(int[] arr) {
Set seen = new HashSet<>();
Set duplicates = new HashSet<>();
List result = new ArrayList<>();
for (int num : arr) {
if (!seen.add(num)) {
duplicates.add(num);
}
}
result.addAll(duplicates);
return result;
}
public static String formatDuplicates(List duplicates) {
if (duplicates.isEmpty()) {
return "HONEST CUSTOMERS";
} else {
StringBuilder sb = new StringBuilder("Duplicates: ");
for (int i = 0; i < duplicates.size(); i++) {
sb.append("Customer #").append(duplicates.get(i));
if (i < duplicates.size() - 1) {
sb.append(", ");
}
}
return sb.toString();
}
}
public static void showMessage(String message) {
JOptionPane.showMessageDialog(null, message);
}
public static void main(String[] args) {
int number;
number = Integer.parseInt(JOptionPane.showInputDialog("Enter the number of customers: "));
int[] customers = new int[number];
for (int i = 0; i < number; i++) {
customers[i] = Integer.parseInt(JOptionPane.showInputDialog("Customer number: "));
}
List duplicates = findDuplicates(customers);
String message = formatDuplicates(duplicates);
showMessage(message);
}
} 通过将问题分解为更小的、更易于管理的部分,可以编写出更清晰、更易于维护的代码。使用 HashSet 可以有效地查找重复元素。StringBuilder 可以有效地构建字符串。JOptionPane 可以方便地显示消息对话框。