2016-08-22 3 views
0

Я пытаюсь добавить пустой массив listList «patternList» в массив списка «treeList», созданный из класса treeNode, но мне трудно заполнить массив treeList arrayList пустым patternList arrayList, показанный в последней строке кода. В принципе, я хочу иметь пустой массив для каждого элемента в treeList, который я буду заполнять позже. Благодарю.Как добавить пустой массивList в другой массивList, созданный из класса

import java.util.*; 
import java.util.ArrayList; 
import java.util.List; 

public class testJava{ 

    public static class treeNode { 
     String nodeName; 
     String pNodeName; 
     String fNodeName; 
     boolean begNode; 
     boolean targetNode; 
     int nodeNumber; 
     //String pattern; 
     ArrayList<String> patternList = new ArrayList<String>(); 
     public treeNode (String nodeName, String pNodeName, boolean begNode, boolean targetNode, int nodeNumber, ArrayList<String> patternList) 
     { 
      this.nodeName = nodeName; 
      this.pNodeName = pNodeName; 
      this.begNode = begNode; 
      this.targetNode = targetNode; 
      this.nodeNumber = nodeNumber; 
      this.patternList = patternList; 
      //this.pattern = pattern; 
     } 
    } 

    public static void main (String[] args){ 
     ArrayList<treeNode> treeList = new ArrayList<treeNode>(); 
     ArrayList<String> openList = new ArrayList<String>(); 
     ArrayList<String> closeList = new ArrayList<String>(); 
     ArrayList<String> treePath = new ArrayList<String>(); 
     String currentNode = ""; 
     String targetNode = ""; 
     int smallestNodeCount = 0; 
     int tempNodeCount = 0; 
     int openListCount = 0; 
     String currentPattern = "" ; 

     treeList.add(new treeNode ("S 1", null, true, false, 1, ArrayList<string> patternList)); 

ответ

1

Чтобы создать новый пустой ArrayList, синтаксис будет new ArrayList<String>().

Поскольку вы немедленно передаете вновь созданный список в качестве параметра в свой конструктор TreeNode, нет необходимости в имени переменной. Поэтому

Ваша последняя строка должна быть:

treeList.add(new treeNode ("S 1", null, true, false, 1, new ArrayList<String>())); 

Кроме того, по соглашению, имена классов Java в UpperCamelCase, а не в lowerCamelCase. Вот почему это ArrayList, а не arrayList.

Ваши имена классов должны быть TreeNode и TestJava, с верхним регистром T.

Еще одна вещь, на которую нужно обратить внимание - это ваши переменные типы; чаще всего вы хотите, чтобы ваши типы переменных использовали интерфейс, когда они были доступны, а не были явно привязаны к определенному классу реализации. Поэтому вместо определения вашего списка с помощью ArrayList<String> openList = new ArrayList<String>();, попробуйте сделать вид openList просто List. Это относится только к левой части декларации. С правой стороны вам нужен конкретный класс (т. Е. ArrayList) при создании нового экземпляра. Таким образом, ваше заявление становится следующим:

List<String> openList = new ArrayList<>(); 
Смежные вопросы