2010-02-28 12 views
5

Ich habe den folgenden Code:Compilation Fehler beim Instanziieren eine neue 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); 
    } 
} 

Und wenn ich dieses Programm mir die folgende Fehlermeldung erhalten kompilieren:

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

Kann mir jemand helfen, diesen Fehler zu beheben?

+0

Welche Java-Version verwenden Sie? Generics werden nur ab Java 5 unterstützt ... – netzwerg

+0

Ich frage mich, wie das kompilieren sollte? Oder ist das nur ein Snippet deines Codes? Vor allem wird rnd nicht deklariert und die Liste wird auch nicht deklariert?! – kukudas

Antwort

0

Ich erinnere mich vage, die in eine Liste addAll stattdessen eine Liste in Arraylists Konstruktor vorbei

2

Ersetzen Sie diese ersten paar Zeilen Ihrer Hauptfunktion mit diesem:

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

Nach dem Beispiel an der Arrays.asList documentation .

(Sie haben auch Doppel import java.util.*;)

edit:

Betrachtet man die anderen Antworten und Bemerkung auf meine Antwort, Ihr Code korrekt zu sein scheint, und das Problem ist wahrscheinlicher, dass Sie muss mit Java 5 (oder neuer) kompiliert werden, welches die Version ist, als eingeführt wurde. Wenn Sie es unter 1.4.2 oder der jeweils verwendeten Version ausführen müssen, entfernen Sie die Instanzen <String>, und Sie können loslegen.

+1

Wenn Sie diese Liste später möglicherweise ändern müssen, wird eine UnsupportedOperationException ausgelöst, da die von Arrays.asList zurückgegebene Liste nicht geändert werden kann. Um dieses Problem zu lösen, kopieren Sie die Liste in eine ArrayList (oder LinkedList oder was auch immer) über den "Copy Constructor" wie in der ursprünglichen Frage oder addAll wie mkoryak sagte. – MatrixFrog

1

Sie brauchen -source 1.5 oder -source 1.6 Ich denke. Oder besser noch eine IDE verwenden. Eclipse, NetBeans und IntelliJ sind alle kostenlos.

+1

Ich würde nicht bald eine IDE greifen. Lerne zuerst die Grundkonzepte richtig :) – BalusC

Verwandte Themen