2010-02-28 48 views
5

我有下面的代碼時:編譯錯誤實例化一個新的ArrayList

import java.util.*; 
import java.io.*; 
import java.util.*; 
import java.io.*; 

public class ShufflingListAndArray 
{ 
    public static void main(String[] args) throws IOException 
    { 
    List <String> services = new ArrayList<String> (
    Arrays.asList("COMPUTER", "DATA", "PRINTER"));//here I have used List <String> services=new ArrayList<String>(Arrays.asList("COMPUTER", "DATA", "PRINTER"));// followed by next statement Satring s=Services.get(rnd.nextInt(Services.size())); 

    String s = services.get(rnd.nextInt(services.size())); 

    Collections.shuffle(list); 
    //Collections.sort(list); 
    System.out.println("List sorting :"+ list); 
    } 
} 

當我編譯這個程序,我得到以下錯誤:

C:\>javac ShufflingListAndArray.java 
ShufflingListAndArray.java:6: '(' or '[' expected 
    List<String> services = new ArrayList<String>(
             ^
1 error 

有人可以幫我解決這個問題?

+0

您正在使用哪個Java版本?泛型只支持Java 5 ... – netzwerg 2010-02-28 11:58:00

+0

我想知道這應該如何編譯?或者這只是你的代碼的小竅門?首先rnd沒有聲明,列表也沒有聲明?! – kukudas 2010-02-28 22:32:55

回答

0

我依稀記得不必中的addAll到一個列表,而不是傳遞一個列表到的ArrayList構造

2

你的主功能的第一對夫婦的線,這種替換:

List<String> services = Arrays.asList("COMPUTER", "DATA", "PRINTER"); 

繼在Arrays.asList documentation的例子。

(也有雙import java.util.*;

編輯:

考慮對我的回答讓其他的答案和評論,您的代碼似乎是正確的,問題是更有可能的是你需要使用Java 5(或更新版本)進行編譯,這是引入Generics時的版本。如果您必須在1.4.2或任何版本上運行它,請刪除<String>的實例,然後您就可以開始使用了。

+1

如果您以後可能需要修改該列表,它將拋出一個UnsupportedOperationException,因爲從Arrays.asList返回的列表是不可修改的。爲了解決這個問題,像在原始問題中那樣通過「複製構造函數」將列表複製到ArrayList(或LinkedList或其他),或者像mkoryak所說的那樣將addAll複製。 – MatrixFrog 2010-02-28 06:55:01

1

您需要-source 1.5或-source 1.6我認爲。或者更好的是使用IDE。 Eclipse,NetBeans和IntelliJ都是免費的。

+1

我不會很快獲取IDE。首先正確學習基本概念:) – BalusC 2010-02-28 22:17:27