zoukankan      html  css  js  c++  java
  • Java集合回忆

    集合概述

    一、List接口
    1. 有序的集合(存储和取出元素的顺序相同)
    2. 允许存储重复的元素
    3. 有索引,可以使用普通的for循环遍历

    Vector集合:不建议使用,该集合里面的方法都是同步的,效率慢,已经被ArrayList取代

    ArrayList集合:查询数据比较快,但添加和删除数据比较慢,底层基于数组实现

    LinkedList集合:查询数据比较慢,但添加和删除数据比较快,底层基于双向链表实现

    二、Set接口
    1. 不允许存储重复的元素
    2. 没有索引,不能使用普通的for循环遍历
    3. 无序的集合(存储和取出元素的顺序可能不一致)linkedhashset例外

    HashSet集合:按照哈希算法存取数据的,具有非常好的性能

    TreeSet集合:可以对Set集合进行排序,默认自然排序(即升序)

    三、Set自动排序
    • String、Integer都已经默认实现了Comparable接口,自定义类型需要自己实现接口,并重写比较方法ComparableTo();
    • 在构造TreeSet或者TreeMap集合的时候给其传一个比较器对象;
    • 当比较规则只有一个的时候,建议实现Comparable接口
    四、迭代器

    迭代器Iterator是一个接口,不能直接调用,只能通过collection集合调用Iterator()方法来获取一个迭代器,通过获取的迭代器来迭代遍历集合中的数据

    常用方法:

    • hashNext():如果存在下一个元素,则返回true
    • next():返回迭代器的下一个元素
    五、Map接口
    1. Map集合Collection集合没有关系
    2. Map集合以key和value的这种键值对的方式存储元素
    3. key和value都是存储java对象的内存地址
    4. 所有的Map集合的key是无序不可重复的,Map集合的key和Set集合存储元素的特点相同

    HashMap集合:底层是哈希表数据结构,是非线程安全的

    TreeMap集合:底层是二叉树数据结构,key可以自动按照大小顺序排序

    六、Map集合的遍历

    方式一:采用遍历集合中所有key的方式来间接得到所有的value,通过调用map集合的keyset()方法

    方式二:将map集合转换成set集合 ,set集合中的每个元素是一个Node节点,这个node节点里有key和value

    通过调用map集合的entrySet()方法转换成set集合

  • 相关阅读:
    P1281 书的复制 dp
    P3402 最长公共子序列(nlogn)
    P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers
    P1202 黑色星期五
    P1205 方块转换
    [递推] hihocoder 1239 Fibonacci
    [二分] hihoCoder 1269 优化延迟
    [分治] POJ 3233 Matrix Power Series
    使用HTMLParser解析html
    CSAPP2e: Proxy lab 解答
  • 原文地址:https://www.cnblogs.com/stublog/p/14440664.html
Copyright © 2011-2022 走看看