Java Collection集合框架&Map总结

Java Collection集合框架&Map

Map接口

+Map接口(没有重复的key,出现重复的key,则value会被覆盖)
    -HashMap类(除了“不同步”和“允许空的Key/Value”之外,与HashTable大致相同)
        -LinkedHashMap(在HashMap的基础上,能够保证输出的顺序和输入的相同)

    -HashTable类(实现同步,线程安全,不允许空值,效率相对较低)

    +SortedMap接口
        -TreeMap类(底层用“红黑树”实现,保证元素有序)

+Collection接口
    +List接口
        -ArrayList类(数组实现的List)
        -LinkedList类(双链表实现的List,经常用作堆栈、队列或者双向队列)
        -Vector类(数组实现的List,支持线程同步)

    +Queue接口
        -不常用

    +Set接口
        -HashSet类
        -LinkedHashSet类(以链表维护元素插入顺序)
        +SortedSet接口
            -TreeSet类

1.Collection接口常用方法                                            

add(),addAll(),clear(),equals(),
size(),toArray(),isEmpty()
Collection没有get()方法,只能通过iterator()来遍历元素

2.List接口自己在Collection的基础上添加了indexOf()方法

3.LinkedList类常用方法:

    offer(E e):在列表尾部插入一个元素
    offerFirst(E e):在列表front插入一个元素
    peek():返回列表第一个元素(不删除)
    peekFirst():返回列表第一个元素(列表为null,则返回null)(不删除) 
    peekLast():返回列表最后一个元素(同上)
    poll():返回并删除第一个元素
    pollFirst():与peekFirst类似
    pollLast():返回并删除最后一个元素
    pop():用作栈时常用方法,返回栈顶元素
    push():压入栈

4.Collections类和Arrays类

    Arrays类是一个专门用来操作数组的工具类,有一组static的方法,对数组进行排序查找等操作
        equals(),fill(),sort(),binarySearch()

Array类的length属性,只能判断array的容量,不能判断其中真实存有多少元素
    Example:
    int arr[] = {1,2,3} System.out.print(arr.length)//打印结果为3
    int arr[] = new int[10] System.out.print(arr.length)//打印结果为10

    Collections类似Arrays,针对集合的一个工具类,也提供一系列静态方法

  1. ArrayList和Vector的区别

    * ArrayList在内存不够时默认是扩展50% + 1个,Vector是默认扩展1倍
    * vector支持indexOf(obj, start)方法,ArrayList不支持
    * vector线程安全,系统开销大
    

    2.Map的遍历方法

    //第一种遍历:推荐
    Map<Integer,Integer> map = new HashMap<Integer,Integer>();
    for(MapEntry<Integer,Integer> entry:Map.entrySet()){
        int key = entry.getKey();
        int value = entry.getValue();
    }
    //在for-each循环中遍历keys或values
    Map<Integer,Integer> map = new HashMap<Integer,Integer>();
    for(Integer key:Map.keySet()){
        System.out.print(key);
    }
    //使用迭代器iterator
    Map<Integer,Integer> map = new HashMap<Integer,Integer>();
    Iterator<Map.Entry<Integer,Integer>> entries = map.entrySet().iterator();
    while(entries.hashNext()){
        Map.Entry<Integer,Integer> entry = entries.next();
        int key = entry.getKey();
        int value = entry.getValue();
    }
     //遍历所有value
     Map<Integer,Integer> map = new HashMap<>();
     for(Integer v : map.values()) {
         System.out.println("value= " + v);
      }

猜你喜欢

转载自blog.csdn.net/u012559634/article/details/67632156