Java. util. Collections. unmodifiableMap example, javacollections

Source: Internet
Author: User
Tags gety

Java. util. Collections. unmodifiableMap example, javacollections

1. Overview

public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m)
Returns the unchangeable view of the specified ing. This method allows the module to provide users with "read-only" access to internal mappings. The query operation executed on the returned ing reads the specified ing.
An attempt to modify the returned ing (whether directly modified or modified through its collection view) will cause UnsupportedOperationException.

If the specified ing is serializable, the returned ing is also serializable.

Parameters:
m-A ing that cannot be modified is returned for the view.
Return Value:
The specified ing cannot be modified.

2. demo

2.1 code (from http://stackoverflow.com/questions/3999086/when-is-the-unmodifiablemap-really-necessary)

package com.rocky.catest;import java.util.Collections;  import java.util.HashMap;  import java.util.Map;    public class SeeminglyUnmodifiable {     private Map<String, Point> startingLocations = new HashMap<String, Point>(3);       public SeeminglyUnmodifiable(){        startingLocations.put("LeftRook", new Point(1, 1));        startingLocations.put("LeftKnight", new Point(1, 2));        startingLocations.put("LeftCamel", new Point(1, 3));        //..more locations..     }       public Map<String, Point> getStartingLocations(){        return Collections.unmodifiableMap(startingLocations);     }       public static void main(String [] args){       SeeminglyUnmodifiable  pieceLocations = new SeeminglyUnmodifiable();       Map<String, Point> locations = pieceLocations.getStartingLocations();         Point camelLoc = locations.get("LeftCamel");       System.out.println("The LeftCamel's start is at [ " + camelLoc.getX() +  ", " + camelLoc.getY() + " ]");         //Try 1. update elicits Exception       try{          locations.put("LeftCamel", new Point(0,0));         } catch (java.lang.UnsupportedOperationException e){          System.out.println("Try 1 - Could not update the map!");       }         //Try 2. Now let's try changing the contents of the object from the unmodifiable map!       camelLoc.setLocation(0,0);         //Now see whether we were able to update the actual map       Point newCamelLoc = pieceLocations.getStartingLocations().get("LeftCamel");       System.out.println("Try 2 - Map updated! The LeftCamel's start is now at [ " + newCamelLoc.getX() +  ", " + newCamelLoc.getY() + " ]");       }  }    class Point{      public float x;      public float y;      public Point(float x, float y){          setLocation(x, y);      }      public void setLocation(float x, float y){          this.x = x;          this.y = y;      }            public float getX(){          return x;      }            public float getY(){          return y;      }  }  

2.2 console output

The LeftCamel's start is at [ 1.0, 3.0 ]Try 1 - Could not update the map!Try 2 - Map updated! The LeftCamel's start is now at [ 0.0, 0.0 ]

 

3. Explanation

The Map returned by the unmodifiableMap method is not allowed to be modified, that is, each entry reference is not allowed to be modified. However, if the value in the entry is an object, the attribute value of the object referenced by the value can be modified.

 

 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.