2010-02-28 40 views
5

Tôi có đoạn mã sau:lỗi Compilation khi instantiating một ArrayList mới

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); 
    } 
} 

Và khi tôi biên dịch chương trình này tôi nhận được lỗi sau:

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

Ai đó có thể giúp tôi giải quyết lỗi này?

+0

Bạn đang sử dụng phiên bản Java nào? Generics chỉ được hỗ trợ như của Java 5 ... – netzwerg

+0

Tôi tự hỏi làm thế nào điều này nên biên dịch? Hay đây chỉ là một đoạn mã của bạn? Trước hết rnd không được khai báo và danh sách không được khai báo? – kukudas

Trả lời

0

Tôi mơ hồ nhớ phải addAll vào một danh sách thay vì đi qua một danh sách vào ArrayLists constructor

2

Thay thế những dây chuyền cặp vợ chồng đầu tiên của chức năng chính của bạn với điều này:

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

Tiếp theo ví dụ tại Arrays.asList documentation .

(Bạn cũng có đôi import java.util.*;)

chỉnh sửa:

Xét câu trả lời khác và bình luận được thực hiện trên câu trả lời của tôi, mã của bạn dường như là chính xác, và vấn đề là nhiều khả năng là bạn cần biên dịch nó với Java 5 (hoặc mới hơn), là phiên bản khi Generics được giới thiệu. Nếu bạn phải chạy nó trên phiên bản 1.4.2 hoặc bất cứ phiên bản nào bạn có, hãy xóa các phiên bản <String> và bạn sẽ sẵn sàng sử dụng.

+1

Nếu bạn có thể cần phải sửa đổi danh sách đó sau này, nó sẽ ném ra một UnsupportedOperationException vì danh sách được trả về từ Arrays.asList không thể sửa đổi được. Để giải quyết vấn đề này sao chép danh sách vào một ArrayList (hoặc LinkedList hoặc bất cứ điều gì) thông qua "constructor sao chép" như trong câu hỏi ban đầu hoặc addAll như mkoryak nói. – MatrixFrog

1

Bạn cần nguồn cấp 1,5 hoặc nguồn 1,6 tôi nghĩ. Hoặc tốt hơn là sử dụng một IDE. Eclipse, NetBeans và IntelliJ đều miễn phí.

+1

Tôi sẽ không lấy một IDE sớm. Đầu tiên tìm hiểu các khái niệm cơ bản đúng :) – BalusC

Các vấn đề liên quan