Не удается добавить элемент (set) в список массивов

#java #arraylist

#java #список массивов

Вопрос:

Я хочу добавить набор, который удовлетворяет некоторым условиям, в список массивов, однако он не может быть добавлен.

 public void insert(List<Set<Integer>> tran){
    Node left = new Node();
    Node right = new Node();
    List<Set<Integer>> insert_list = new ArrayList<Set<Integer>>();
    for(int i = 0; i < insert_list.size(); i  ){
        Set<Integer> temp = insert_list.get(i);
        System.out.println(temp);
        Iterator itr = temp.iterator();
        int value = (int)itr.next();
        System.out.println(value);
        if(value%2 ==0){
            left.leaf.add(temp);
        }
        else{
            right.leaf.add(temp);
        }
    }
    System.out.println(left.leaf);
    System.out.println(right.leaf);
  

В основной функции я вызвал как:

 Node test = new Node();
test.insert(candidate2);
  

Это функция из Node класса, ее конструктор выглядит следующим образом:

 private List<Set<Integer>> leaf = new ArrayList<Set<Integer>>();
private Node left; // the node that can point to the left
private Node right; // the node that can point to the right
public Node(){
    this.leaf = new ArrayList<Set<Integer>>();
    left = null;
    right = null;
 }
  

Кроме того, System.out.println(value); и System.out.println(temp); также не могут быть напечатаны, что действительно странно.

Более того, если я изменю коды итератора на if((int)temp.toArray()[0]%2 == 0) , это все равно не сработает.

У меня есть List<Set<Integer>> insert_list со следующим атрибутом: [[1, 15], [1, 58], [1, 274], [1, 326], [58, 15], [274, 15], [326, 15], [274, 58], [326, 58], [274, 326]] . Желаемый результат должен быть [[274, 15], [326, 15], [274, 58],[326, 58], [274, 326]] для left.leaf и [1, 15], [1, 58], [1, 274], [1, 326]] для right.leaf .

Кстати, я протестировал эти коды в функции main, и это сработало, я совершенно не представляю, почему это не сработало таким образом.

Заранее спасибо!

Редактировать:

Вывод моей функции:

 []
[]
  

Комментарии:

1. Покажите нам, пожалуйста, какую-нибудь трассировку стека …:)

2. @MordechayS В моих выходных данных нет трассировки стека. Все хорошо, за исключением того, что мои выходные данные для left.leaf и right.leaf — это просто [] и []

3. это вывод System.out.print или пошаговый отладчик?

4. он спрашивает, запустили ли вы программу .. какой результат она показывает?

5. @ShreyasSarvothama Я только что обновил результат в вопросе! Результат просто [] []

Ответ №1:

Вы путаете метод arg — tran с вашим локальным var — insert_list.

То, что вы намеревались написать, это:

 for(int i = 0; i < tran.size(); i  ){
    Set<Integer> temp = tran.get(i);
  

Для чего вам нужен insert-list? это кажется избыточным

Комментарии:

1. В самом начале, я думаю, что каждый ArrayList параметр as должен быть инициализирован… Оказывается, я был неправ.