Java 两个列表中元素的存在性

Java 两个列表中元素的存在性,java,swing,Java,Swing,我想验证两个JTable中是否存在显示问题的元素 当我点击第一个列表中的问题时,该程序将被传输到第二个JTable,但我不想添加重复限制,因此我不想在第二个列表中添加两次问题,我想添加一个控件,如果它将添加,则用户无法添加第二次 table = new JTable(); table.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg

我想验证两个JTable中是否存在显示问题的元素 当我点击第一个列表中的问题时,该程序将被传输到第二个JTable,但我不想添加重复限制,因此我不想在第二个列表中添加两次问题,我想添加一个控件,如果它将添加,则用户无法添加第二次

table = new JTable();
    table.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent arg0) {
            for (int i = 0; i < questions2.size(); i++) {
            /* the control code */  
                Question selected=questions.get(table.getSelectedRow());
                questions2.add(selected);
                questions.remove(selected);
                initDataBindings();
            } 


        }
    });

使用Set。假设您有第一个列表:

List<Question> questions1 = new ArrayList<Question>();
使用此方法,Set将能够判断两个问题是否相等,并创建存储所需的哈希代码。最好的方法是若你们有唯一的id,但其他的东西可以帮助你们。如果您在答案中添加问题类,我可能会帮助您确定equals和hashCode方法的最佳实现

现在,在用户执行某些操作时,将它们放置在HashSet中:

HashSet<Question> questionsSet = new HashSet<Question>();
boolean isPresentInList = questionsSet.contains(question);
questionsSet.add(question);

由于您在问题中使用了Jtables, 您需要首先检查该值是否存在于jtable中。如果该值不存在,则可以将其添加到jtable中。在您提交的代码中,您没有检查该值是否存在

    public boolean ifExists(JTable table,string entry) {


    int rowCount = table.getRowCount();
    int columnCount = table.getColumnCount();


    for (int i = 0; i < rowCount; i++) {
        String value = "";
        for (int j = 0; j < columnCount; j++)
            value = value + " " + table.getValueAt(i, j).toString();
        if (value.equalsIgnoreCase(entry)) {
            return true;
        }
    }
    return false;
}
在上面的代码中,我使用for循环检查数据的存在性。 它将迭代jtable,如果该值存在,则返回true。
如果返回值为false,则可以继续添加数据。用上面的代码试试。

看看:如果不想重复,请使用Set not list。集合和列表之间的唯一区别是列表包含重复项,但集合从不包含重复项谢谢你的建议,但我想控制JTable这是我在本例中必须做的事情我必须检查列表,如果问题存在,我必须显示消息。谢谢,但列表问题1的hashCode和equals已完成新ArrayList;第一张清单?你能给我看一下问题代码吗?你有这些方法吗?我有一套与问题相关的服务,但在这种情况下,它是一个简单的显示,从问题中选择Q;我使用的是JPQL,但你是否创建了课堂问题?我无法检查第二个列表中的课程,如果问题存在于第二个列表中,它会显示一条消息,类似于此。感谢@Priyamal提供的解决方案,但第一个JTable显示了数据库中的所有问题,因此我不必检查你明白我的意思吗?如果你不想添加重复项,那么这就是你应该做的。因为你试图向一个没有重复项的jtable添加数据,用这个方法检查是否存在,你不必在每个jtable上调用它,在一个你不想要重复项的jtable上试试。我不想在第一个jtable中检查重复项,我只想检查用户是否想要添加一个问题进入第二个JTable,因为第一个他不能用它做任何事情,它显示在数据库中,我希望程序检查问题是否存在于第二个JTable显示消息中,无法添加,因为问题已经存在,如果不存在,他可以添加SimplyTank很多朋友,这只是误解再次感谢
List<Question> questions2 = Arrays.asList(questionsSet);
    public boolean ifExists(JTable table,string entry) {


    int rowCount = table.getRowCount();
    int columnCount = table.getColumnCount();


    for (int i = 0; i < rowCount; i++) {
        String value = "";
        for (int j = 0; j < columnCount; j++)
            value = value + " " + table.getValueAt(i, j).toString();
        if (value.equalsIgnoreCase(entry)) {
            return true;
        }
    }
    return false;
}