2016-11-27 59 views
-1

我一直收到「收藏是私人的」錯誤。我想創建一個ArrayList。你如何正確地擴展Collections課程?收藏是私人的

import java.util.Collections; 

public class lists extends Collections { 

    public static void main(String[] args) { 
     Arraylist <Integer> x = new Arraylist<>(); 
     int[] y = new int[100]; 
     for(int i = 0; i<100-1; i++) { 
      y[i] = i; 
     } 
     for(int j = 0; j<100-1; j++) { 
      Integer z = new Integer(y[j]); 
      x.set(j , z); 
      System.out.println(x.get(j)); 
     } 
    } 
} 
+0

如果你想使用一個類時,你需要導入類。沒有什麼不同的課程。 – SLaks

+1

無論如何,你沒有理由使用'extends'關鍵字。你甚至沒有實例化'list'的實例! – Makoto

回答

1

來自Collections類。集合類是不可實例化的,因爲它具有私有構造函數。如果您有一個調用Collections類的子類,則該子類將調用超類構造函數,因爲超類未定義要調用的任何其他構造函數。您不能實例化Collections超類及其子類。

// Suppresses default constructor, ensuring non-instantiability. 
    private Collections() { 
    } 

從你的問題,如果你只是想實例化一個ArrayList類。該行ArrayList <Integer> x = new ArrayList<>();將足以導入java.util.ArrayList

檢查您的代碼並在需要的地方添加變量,您可以進一步改進邏輯。

final int RANGEVAL = 100; 
    for(int i = 0; i < RANGEVAL -1 ; i++) { 
     x.set(i , i); //You can also use x.add(i); 
     System.out.println(x.get(i)); 
    } 
1

首先,如果你想要做的就是創建一個實例ArrayList,沒有理由延長任何東西。在你的示例代碼中不需要它。

如果你確實想要你自己的收藏,那麼Collections是錯誤的類。您需要實施Collection<E>,單數或List<E>

實現這些接口是很多工作。您可以通過分類AbstractList<E>節省大量時間。當你這樣做時,你只需要執行get(int)size();剩下的就是爲你完成的。如果列表是可修改的,那麼您還需要覆蓋set(int, E)add(int, E)remove(int)

2

也許如果你只是試圖使用ArrayList那麼你不需要延長這一點。

  1. ArrayList(不Arraylist
  2. 你的第一個循環,而不是使用100-1 y.length
  3. 您可以使用x.add()添加您的整數值,而不需要設置應該添加的索引,因爲您嚴格指定了一個模式。

嘗試這種解決方案:

import java.util.ArrayList; 

public static void main (String[] args) throws java.lang.Exception 
{ 
    ArrayList <Integer> x = new ArrayList<Integer>(); 
    int[] y = new int[100]; 
    for(int i = 0; i<y.length; i++){ 
     y[i] = i; 
    } 
    for(int j = 0; j<100-1; j++){ 
     x.add(new Integer(y[j])); 
     System.out.println(x.get(j)); 
    } 
} 

但是,這裏是更好的解決方案,同樣的成就有一個循環:

public static void main (String[] args) throws java.lang.Exception 
{ 
    ArrayList <Integer> x = new ArrayList<>(); 
    for(int j = 0; j<100-1; j++){ 
     x.add(new Integer(j)); 
     System.out.println(x.get(j)); 
    } 
}