2016-08-22 5 views
0

空のarrayList "patternList"をtreeNodeクラスから作成した "treeList"のarrayListに追加しようとしていますが、treeListのarrayListに空を入れても問題があります。 patternListの最後の行に表示される配列リスト。基本的には、treeList内の各項目の空のarrayListを作成して、後で入力します。ありがとう。空のarrayListを別のクラスに追加する方法

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クラス名がlowerCamelCaseで、UpperCamelCaseではありません。そのため、arrayListではなく、ArrayListとなっています。

クラス名はTreeNodeTestJavaで、大文字の場合はTである必要があります。

注目すべきもう1つの点は、変数の型です。より多くの場合、特定の実装クラスに明示的に縛られるのではなく、使用可能な場合には変数型にインターフェイスを使用することを望みます。したがって、ArrayList<String> openList = new ArrayList<String>();を使用してリストを定義する代わりに、openListのタイプを単にListにすることを検討してください。これは、宣言の左側にのみ適用されます。右側には、新しいインスタンスを作成するときに具体的なクラス(ArrayList)が必要です。したがって、あなたの宣言は次のようになります。

関連する問題