2013-01-31 41 views
7

Nó được đề cập trong LinkedHashMap Javadocs:LinkedHashMap vấn đề trật tự

Đặc biệt, các hoạt động về thu-quan điểm không ảnh hưởng đến trật tự lặp lại của bản đồ ủng hộ.

"Hoạt động trên chế độ xem tập hợp" có nghĩa là gì?

+0

"hoạt động trên chế độ xem bộ sưu tập" có nghĩa là các thao tác trên chính LInkedHashMap. Vui lòng bao gồm [Cuộc sống nội bộ của LinkedHashMap] của tôi (http://volodial.blogspot.com/2013/07/internal-life-of-linkedhashmap-in-java.html) hướng dẫn –

Trả lời

7

Các collection-views of Maps là những đối tượng được trả về bởi:

  • Map#keySet()
  • Map#values()
  • Map#entrySet()

Các thao tác trên những chỉ có nghĩa là bất cứ phương pháp kêu gọi các trường hợp thu-view.

+0

Làm cách nào để bất kỳ hoạt động nào trên các lượt xem đó thay đổi thứ tự lặp lại, vì bạn không thể thêm hoặc nhận được? – assylias

+0

@assylias Tôi không chắc chắn; về mặt lý thuyết lặp lại trên các khung nhìn bộ sưu tập? –

+1

LinkedHashMap có một hàm tạo đơn đặt hàng các phần tử theo truy cập gần đây nhất, do đó, nó có thể tưởng tượng được hoặc các hoạt động tra cứu khác trên các khung nhìn bộ sưu tập có thể ảnh hưởng đến thứ tự lặp trong trường hợp đó. –

3

Nếu tôi hiểu rõ, có thể tôi không, chế độ xem bộ sưu tập là Collection s thu được bằng các tóm tắt của nó, như mục nhập, giá trị và keySet.

Thao tác trong các bộ này sẽ không ảnh hưởng đến thứ tự truy cập của các đối tượng bên trong của bạn LinkedHashMap khi bạn đang sử dụng hàm tạo đặc biệt khiến đối tượng của bạn được sắp xếp theo thứ tự truy cập.

+2

Tôi cần tìm hiểu cách nhập nhanh hơn haha ​​:) –

7

thử nghiệm này là nghĩa vụ phải chứng minh như thế nào nó hoạt động

Map m = new LinkedHashMap(16, 0.75f, true); 
    m.put(1, 1); 
    m.put(2, 2); 
    m.put(3, 3); 
    System.out.println(m); 
    m.get(2); 
    System.out.println(m); 
    Set keys = m.keySet(); //API: Returns a Set view of the keys contained in this map. 
    keys.iterator().next(); 
    System.out.println(m); 

đầu ra

{1=1, 2=2, 3=3} 
{1=1, 3=3, 2=2} 
{1=1, 3=3, 2=2} 

có nghĩa là, việc truy cập vào 2-2 thay đổi thứ tự lặp, và truy cập vào mục đầu tiên 1-1 trên khung nhìn keySet không

+2

+1 cho ví dụ. – assylias

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