```java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class NameGrouping { public static void main(String[] args) { JFrame frame = new JFrame("名字分组"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 300); JPanel panel = new JPanel(); frame.add(panel); placeComponents(panel); frame.setVisible(true); } private static void placeComponents(JPanel panel) { panel.setLayout(null); JLabel nameLabel = new JLabel("输入名字:"); nameLabel.setBounds(10, 20, 80, 25); panel.add(nameLabel); JTextField nameInput = new JTextField(20); nameInput.setBounds(100, 20, 165, 25); panel.add(nameInput); JButton addButton = new JButton("添加"); addButton.setBounds(275, 20, 80, 25); panel.add(addButton); JTextArea resultArea = new JTextArea(); resultArea.setEditable(false); JScrollPane scrollPane = new JScrollPane(resultArea); scrollPane.setBounds(10, 60, 360, 200); panel.add(scrollPane); addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String name = nameInput.getText().trim(); if (!name.isEmpty()) { // 这里可以添加名字到分组的逻辑,例如: Map<Character, List<String>> groupedNames = groupNamesByInitial(name); resultArea.setText(groupedNames.toString()); } else { JOptionPane.showMessageDialog(null, "请输入有效的名字"); } } }); } private static Map<Character, List<String>> groupNamesByInitial(String names) { Map<Character, List<String>> groupedNames = new HashMap<>(); String[] nameArray = names.split("\\s+"); for (String name : nameArray) { if (!name.isEmpty()) { char initial = name.charAt(0); if (!groupedNames.containsKey(initial)) { groupedNames.put(initial, new ArrayList<>()); } groupedNames.get(initial).add(name); } } return groupedNames; } } ``` [2024-07-29 14:12:36 | AI写代码神器 | 740点数解答]