¿Por LinkedCaseInsensitiveMap utiliza tanto LinkedHashMap y HashMap?

sem Zhang:

Estoy mirando la estructura de LinkedCaseInsensitiveMap (primavera marco 5.0.5.RELEASE). Tengo curiosidad por qué LinkedCaseInsensitiveMap utiliza tanto LinkedHashMap y HashMap, y por qué no sólo tiene que utilizar LinkedHashMap así?

   private final LinkedHashMap<String, V> targetMap;

   public V get(Object key) {
      if (key instanceof String) {
         return this.targetMap.get(convertKey((String) key));
      }
      return null;
   }
vlad324:
private final LinkedHashMap<String, V> targetMap;

private final HashMap<String, String> caseInsensitiveKeys;

En este caso targetMapcontiene cadena de caso real de su objeto, y caseInsensitiveKeyscontiene la cartografía de su clave en minúsculas a su clave de los casos reales.

Permite mostrar teclas de casos reales cuando se está haciendo por-cada iteración, pero, al mismo tiempo que le permite tener mayúsculas y minúsculas.

Así que vamos a decir, siguiente código:

LinkedCaseInsensitiveMap<Object> map = new LinkedCaseInsensitiveMap<>();
map.put("MyCustomObject", new Object());

pondrá "MyCustomObject" -> new Object()en targetMapy "mycustomobject" -> "MyCustomObject"en caseInsensitiveKeys. Y ahora si intenta imprimir todos los objetos de su mapimprimirá como que ha añadido y no ha cambiado las llaves. No puede archivar sin segundo mapa.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=205369&siteId=1
Recomendado
Clasificación