2016-05-05 2 views
-1

Я хочу проверить существование элемента в двух 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(); 
      } 


     } 
    }); 

My Result

I do not want this

+0

взгляните на: https://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashSet.html – Roman

+0

, если вы не хотите, чтобы дубликат использовал 'Set' not' list'. единственная разница между 'set' и' List' является 'List' содержит дубликат, но' set' никогда не содержит дубликата –

+0

Спасибо за предложение, но я хочу сделать контроль над JTable, это то, что я должен сделать в этом примере я должен проверить список, и если вопрос существует, я должен показать сообщение. – Georgio

ответ

0

, так как вы используете JTable: в вопросе, вам нужно проверить, существует ли значение в 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; 
} 

в приведенном выше коде im проверяет наличие данных с использованием цикла for. будет перебирать jtable и возвращать true, если значение существует. , если возвращаемое значение ложно, вы можете продолжить и добавить данные. попробуйте его с приведенным выше кодом.

+0

Спасибо @Priyamal за решение, но t он сначала JTable отображает весь вопрос из базы данных, поэтому мне не нужно проверять существование ценности, которую вы меня понимаете? – Georgio

+0

, если вы не хотите добавлять дубликаты, то это то, как вы должны это делать. Поскольку вы пытаетесь добавить данные в jtable без дубликатов, проверьте существование с помощью этого метода, вам не нужно называть его на каждом jtable try это на тот, который вы не хотите дублировать. – Priyamal

+0

Я не хочу проверять дубликаты в первом JTable, я просто хочу проверить, хочет ли пользователь добавить вопрос во второй JTable (при условии, что первый он ничего не сможет с ним отобразить из DataBase), я хочу что программа проверяет, существует ли вопрос во втором сообщении JTable show («невозможно добавить его, что вопрос уже существует»), если он не может добавить просто – Georgio

0

Используйте Set. Допустим, у вас есть первый список:

List<Question> questions1 = new ArrayList<Question>(); 

теперь, вопрос должен иметь эти методы:

@Override 
public int hashCode() { 
    // Let your IDE generates it based on variables 
} 

@Override 
public boolean equals() { 
    // Let your IDE generates it based on variables 
} 

С помощью этого метода, Set будет в состоянии выяснить, если два Question являются equal, а также создавать hashCode , необходимых для хранения. Лучший способ - если у вас есть уникальный id, но другие вещи могут помочь. Если вы добавите класс Question в свой ответ, я могу помочь вам решить наилучшую реализацию методов equals() и hashCode().

Теперь вы поместите их в HashSet, поскольку пользователи делают некоторые действия:

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

Метод содержит будет проверять, если этот вопрос присутствует в questionsSet. add проверяет, существует ли в нем равный вопрос, определяемый правилами в методе equals(), и если это так, он переопределит его, иначе он просто добавит. Таким образом, у вас не будет дубликатов в questionsSet. Теперь, когда вы нуждаетесь в ArrayList из questionsSet сделать это:

List<Question> questions2 = Arrays.asList(questionsSet); 
+0

Спасибо, но hashCode и equals сделаны для List questions1 = new ArrayList (); (первый список)? – Georgio

+0

Можете ли вы показать мне код для Вопроса? У вас есть эти методы? –

+0

У меня есть набор услуг, связанных с вопросом, но в этом случае это простой дисплей (выберите Q From Question, я использую JPQL) – Georgio

Смежные вопросы