2013-08-21 176 views
2

爲什麼這是錯誤的?我不能使用添加,我不知道如何。一些Java文檔說我需要添加(索引,數據),但其他人只是添加(數據),編譯器也支持。它對我的數據類型有錯誤。使用ArrayLists自定義類

import java.util.*; 
public class graph1 { 

    public static void main (String[] args){ 
     ArrayList<Node> web = new ArrayList<Node>();  
     web.add(0, "google", new int[]{1,2}); 

    } 
} 

Node.java:

public class Node { 
     int i; 
     String title; 
     int[] links;  

     Node(int i, String title, int[] links){ 
      this.i = i; 
      this.title = title; 
      this.links = links; 
     } 
    } 
+0

只是爲了幫助您,請通過以下語言基礎:http://docs.oracle.com/javase/tutorial/reallybigindex.html。你在其他問題上提到的不是太先進,但是在理解像數組這樣的基本知識之前,你正在完成諸如創建和使用對象等事情。注重條件,循環,數組,然後轉到對象/類。 –

+1

我實際上有大約一年的Java經驗,我在編程方面很糟糕。 –

+1

回到基礎並學習原始類型,條件,循環和數組。如果沒有它們,你只會更加困惑於對象,類和類似的東西。 –

回答

4

你忘了包括new Node(...) ArrayList的add(...)方法,因爲你不加入一個int,String和組合內Array的數組,而是你添加一個Node對象。要做到這一點,必須明確創建的節點對象,然後補充說:

web.add(new Node(0, "google", new int[]{1,2})); 
+1

噢好吧我不確定java如何處理這樣的數據類型。我不知道這是否意味着我所投入的是一個Node。 –

+0

@ YKQ56:不是。編譯器不知道你想要添加什麼類型的對象,直到你明確地告訴它。編譯器必須檢查以確保它是*正確的*類型的對象。 –

3

使用此:

web.add(new Node(0, "google", new int[] {1, 2})); 
2

你有節點的ArrayList,但嘗試添加一堆隨機變量。你需要使用這些變量來創建一個節點然後添加它。

web.add(new Node(0, "google", new int[]{1,2})); 
3

你需要使節點像這樣

Node node = new Node(i, title, links); 
web.add(node); 
+2

幫助解釋此代碼。你有什麼是節點的數組列表。節點是一個對象,它有一個int i,一個String標題和一個int數組。所以,當你添加到你的列表中時,你實際上想要添加一個節點,而不是其他任何數據。你可以用安德魯所說的做到這一點。它創建一個名爲「node」的新節點,然後將其添加到列表中。要使用您提供的值進行工作,您需要: 節點節點=新節點(0,「google」,new int [] {1,2}); web.add(node); – ThePerson

0

你自定義的類必須是爲了將它添加到ArrayList instantiated。爲此,請使用web.add(new Node(0, "google", new int[]{1,2}));

就你而言,你使用了web.add(0, "google", new int[]{1,2});,這是java編譯器在你試圖一次添加3個對象時所理解的,因此編譯器會抱怨你的代碼有問題。

此外,您應該考慮implementing (overriding)自定義compare(o1, o2)如果您需要排序數組,因爲默認Collections.sort(list)不知道如何正確排序您的對象。