我有这个课:

public class Registry {
    private ArrayList<Communication> communicationList;
    private ArrayList<Suspect> suspectList;
}


在主要班级,我增加了怀疑:

registry.addSuspect(s1);
registry.addSuspect(s2);
registry.addSuspect(s3);


我有一个窗口FindSuspect的类,该窗口具有一个文本字段和一个按钮。如何在registry.suspectList中搜索嫌疑人的姓名?
此类在FindSuspect类内:

class ButtonListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            //There will be an if statement here, which will check if the textField.getText() is a suspect inside
            //the registry.suspectList
            JOptionPane.showMessageDialog(null,"Suspect " + textField.getText() + " not found!");
        }
    }


我很困惑,因为唯一的注册表项在我的主目录中,所以我无法从我的FindSuspect类(按钮侦听器所在的位置)访问可疑列表,这意味着我无法搜索可疑对象。

最佳答案

假设您的Registry类实例可通过actionPerformed方法访问,并且Suspect类具有一个名为name的字段

您可以添加此代码

boolean matchNotFound = registry.getSuspectList()
        .stream()
        .filter(s -> s.getName().equals(textField.getText()))
        .noneMatch();

if (matchNotFound) {
    JOptionPane.showMessageDialog(null,"Suspect " + textField.getText() + " not found!");
}


要访问Registry类中的FindSuspect,有多种方法:


在您的Main class中将其标记为静态,然后在此处访问
将其作为参数传递给“ FindSuspect”构造函数
将其移至可以从FindSuspect访问的另一个类

10-05 23:35