2009-08-14 33 views

Trả lời

101

Sử dụng List.subList:

import java.util.*; 
import static java.lang.Math.min; 

public class T { 
    public static void main(String args[]) { 
    List<String> items = Arrays.asList("1"); 
    List<String> subItems = items.subList(0, min(items.size(), 2)); 

    // Output: [1] 
    System.out.println(subItems); 

    items = Arrays.asList("1", "2", "3"); 
    subItems = items.subList(0, min(items.size(), 2)); 

    // Output: [1, 2] 
    System.out.println(subItems); 
    } 
} 

Bạn nên nhớ rằng subList trả một cái nhìn của các mặt hàng, vì vậy nếu bạn muốn phần còn lại của danh sách để đủ điều kiện thu gom rác thải, bạn nên sao chép các mục bạn muốn mới List:

List<String> subItems = new ArrayList<String>(items.subList(0, 2)); 

Nếu danh sách ngắn hơn kích thước được chỉ định, mong đợi một ngoài giới hạn exception. Chọn giá trị tối thiểu của kích thước mong muốn và kích thước hiện tại của danh sách làm chỉ mục kết thúc.

Cuối cùng, lưu ý rằng đối số thứ hai phải là một đối số lớn hơn chỉ số mong muốn cuối cùng.

+1

trong khi câu hỏi không rõ ràng, có vẻ như sam muốn kết thúc danh sách bị xóa. Do đó câu trả lời của bạn nên bao gồm một list.clear(). –

+0

Điều này không có khả năng thực hiện cũng như giải pháp của karim79, đó là giải pháp thay thế tốt nhất - nó có cơ hội hoạt động tốt nhất và cũng là mã sạch nhất. –

+0

Tôi nghĩ rằng nó phụ thuộc vào số lượng các yếu tố được loại bỏ (và cũng nếu Danh sách hỗ trợ sửa đổi) –

43
list.subList(100, list.size()).clear(); 

hay:

list.subList(0, 100); 
+2

Tùy chọn đầu tiên sửa đổi danh sách trong khi danh sách thứ hai không thay đổi. Nó cũng được gọi là 'list = list.subList (0, 100)' –

+3

Cũng lưu ý rằng 'subList (100, list.size()). Clear()' sẽ chỉ hoạt động nếu danh sách có phương thức rõ ràng được thực hiện, ví dụ nếu bạn tạo 'list' bằng' List list = Arrays.asList (someString.split (",")); 'clear() sẽ ném' UnsupportedOperationException' vì 'list' sẽ là một' List' trừu tượng. – Gyuri

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