2012-05-14 36 views
6

Tôi đang cố gắng để có được một submap của LinkedHashMap dựa trên chỉ số phần tử. Tôi có sáng tạo lại bánh xe ở đây không? Âm thanh như thế này phải ở đâu đó trong API đã có:Làm cách nào để lấy submap của LinkedHashMap theo chỉ mục phần tử?

public <K,V> LinkedHashMap<K,V> subMap(LinkedHashMap<K,V> map, int fromIndex, int toIndex) { 
    LinkedHashMap<K,V> result = new LinkedHashMap<K,V>(); 

    int i=0; 
    for(Map.Entry<K,V> entry : map.entrySet()) { 
     if(i >= fromIndex && i < toIndex) { 
      result.put(entry.getKey(), entry.getValue()); 
     } 
     i++; 
    } 

    return result; 
} 

Đây có phải là cách để đi hoặc có một số giải pháp tốt hơn/hiện có khác (trong Java 6 API).

+0

Bản đồ 'Bản đồ trả lại 'sẽ được sử dụng như thế nào? Bạn có thể sử dụng một iterator thay thế? Nếu có, bạn có thể trả về một trình vòng lặp tùy chỉnh trả về các giá trị (hoặc Map.Entries) giữa phạm vi chỉ mục đã chỉ định. Hãy ghi nhớ các vấn đề tương tranh khi giao dịch với các phạm vi chỉ mục của một bộ sưu tập. – Nate

Trả lời

1

NavigableMap cho phép bạn lấy lại bản đồ phụ, nhưng yêu cầu bạn chỉ định 'từ khóa' và 'thành khóa', vì vậy bạn không thể thực hiện hoàn toàn chỉ mục.

Tôi không biết cách nào khác để thực hiện việc này thông qua API chuẩn.

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