映射map

来源:互联网 发布:手机卧底软件2017 编辑:程序博客网 时间:2024/05/17 07:01

接口

  • java.util.Map<K,V>
    • java.util.SortedMap<K,V>
      • java.util.NavigableMap<K,V>
  • java.util.Map.Entry<K,V> 
注意:Map.Entry<K,V> 这个接口。三个方法getKey() getValue() setValue() hashCode()
Map的方法:keySet() entrySet() values()
put()----putAll()   get() containsKey() containsValue()

类架构

  • java.lang.Object
    • java.util.AbstractMap<K,V> (implements java.util.Map<K,V>)
      • java.util.EnumMap<K,V> (implements java.lang.Cloneable, java.io.Serializable)
      • java.util.HashMap<K,V> (implements java.lang.Cloneable, java.util.Map<K,V>, java.io.Serializable)
        • java.util.LinkedHashMap<K,V> (implements java.util.Map<K,V>)
      • java.util.IdentityHashMap<K,V> (implements java.lang.Cloneable, java.util.Map<K,V>, java.io.Serializable)
      • java.util.TreeMap<K,V> (implements java.lang.Cloneable, java.util.NavigableMap<K,V>, java.io.Serializable)
      • java.util.WeakHashMap<K,V> (implements java.util.Map<K,V>) 
两个通用的实现:HashMap和TreeMap
区别:TreeMap有顺序:按照键的整体顺序对元素进行排序;HashMap的速度稍快;TreeMap的构造
注意:
对同一个键两次使用Put,第二个值会覆盖第一个值。
三个视图:
keySet() values() entrySet();不能利用keySet来只加键,不加value,如果keySet调用add()方法,将会抛出一个UnsupportedOperationException。

几个特殊的Map

WeakHashMap:解决     如果有一个值对应的键已经不再使用了的情况。

linkedHashSet  记录插入顺序
linkedHashMap:使用访问顺序,来记录:每次调用getset将受影响的条目从当前的位置删除,并放到条目链表的尾部---------“访问顺序”对于实现“最近最少使用”原则十分重要
当限制Map大小时,有一个重要需要覆盖的方法,就是removeEldstEntry()

EnumSet的建立:调用静态工厂方法
EnumMap: EnumMap<WeekDay,EmPloy> personInCharge = new EnumMap<Weekday,Employee>(weekday.class);

集合框架

RandomAccess用来检测一个特定的集合是否支持高效的随机访问。

视图的概念  keySet

包装器

ARRAY类提供了动态创建和访问 Java 数组的方法。 newInstance(Class<?> componentType, int length)ARRAYS此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。Arrays.asList()
注意:asLIst()方法返回的是一个视图,只能GEtSet不嗯能够改变大小如Remove,Add() 
Collections类:
nCopies(n,anObject); 返回一个不可修改的LIst接口对象
singleton(anObject);返回一个Collection接口对象。
singleMap()

子范围

sublist 
subSet headSet tailSet()
subMap()
headMap()
tailMap()

不可修改视图

Collections.unmodifiableCollection()     unmodifiableSet() unmodifiableList()

同步视图

SynChronizedSet SynChronizedMap SynChronizedList

被检查视图

向LIst<Student>中加入teacher对象时,不会报错,Checked视图就会报错。

批操作

addAll removeAll retainAll()

集合数组之间的转换

1  String values=....... 
     HashMap<String> staff = new HashMap<String> (Arrays.asList(values));
2  错误:String[] values = staff.toAaary()   返回的是Object[]
正确 : String[] values = staff.toArray(new String[0])或者String[] values = staff.toArray(String.class)




0 0
原创粉丝点击