#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 должен быть инициализирован… Оказывается, я был неправ.