Java学习11 集合与映射

来源:互联网 发布:unity3d棋牌游戏教程 编辑:程序博客网 时间:2024/05/20 19:48

相关API关系结构

Collection Set HashSet TreeSet List ArrayList Vector ←Stack Map HashMap HashTable ←Properties TreeMap Enumeration StringTokenizer java.util.Arrays java.util.Collections

集合

java.util.Collection接口

  • 描述Set和List的接口
  • 通用方法:

    方法 描述 boolean add(Object o) boolean remove(Object o) int size() boolean isEmpty() boolean contains(Object o) void clear() Iterator iterator() Object[] toArray() 返回所有元素的数组

集(Set)

java.util.Set

  • HashSet

    • 不保证集合中元素顺序,允许包含null元素
    • 不是同步的
      多线程可通过Set s = Collections.synchronizedSet(new HashSet(...));包装使用
  • TreeSet

    • 集合中的元素有序,元素必须实现Comparable接口,重写compareTo方法
      可参考TreeSet进行排序的2种方式:(1)默认按照对象的自然顺序进行排序; (2)用户自定义排序规则

    • 不是同步的
      多线程可通过SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));包装使用

自然排序

  • Comparable接口
    • public abstract int compareTo(Object obj):自然比较方法
    • 用户在重写compareTo()方法以定制逻辑时,要确保与等价性判断方法equals()保持一致

Iterator接口

  • 迭代器

    方法 描述 boolean hasNext() Object next() void remove() 每次调用next只能调用一次此方法。如果进行迭代时用调用此方法之外的其他方式修改了该迭代器所指向的collection,则迭代器的行为是不确定的

列表(List)

java.util.List

  • 其他方法:

    方法 描述 void add(int index, Object element) 在指定位置插入指定元素 Object get(int index) 返回指定位置的元素 Object set(int index, Object element) 用指定元素替换指定位置的元素 int indexOf(Object o) 返回指定元素第一次出现的索引;如果不包含,则返回 -1 Object remove(int index) 移除指定位置的元素,返回所删除的对象
  • ArrayList

    • 长度可变;元素允许为null
    • 不同步,非线程安全,适合单线程环境
    方法 说明 ArrayList() ArrayList(int initialCapacity) 构造一个具有指定初始容量的空列表 void ensureCapacity(int minCapacity) 确保列表至少能容纳最小容量参数所指定的元素数 void trimToSize() 将实例容量调整为列表的当前大小
  • Vector

    • Vector是同步(线程安全)的,运行效率比ArrayList低一些,主要用于多线程环境
  • Stack

    • 继承了Vector类
    • 后进先出
    方法 说明 Stack() Object push(E item) 压栈 Object pop() 出栈 Object peek() 查看栈顶 boolean empty() void clear() int search(Object o) 返回对象在堆栈中的位置(最靠近栈顶),以 1 为基数

映射

java.util.Map

  • 主要方法:

    方法 描述 Object put(Object key, Object value) Object get(Object key) 返回指定键所映射的值;如果不包含,返回 null boolean containsKey(Object key) boolean containsValue(Object value) Set keySet() 返回映射中包含的的Set视图 Collection values() 返回映射中包含的的Collection视图
  • HashMap

    • 不保证元素顺序,允许使用null键和null值
    • 不同步,只适用单线程环境
    • 影响HashMap性能的两个参数:
      • 初始容量(Initial Capacity)
      • 加载因子(Load Factor):百分比;如容量为16,加载因子为0.75,当数量超过16*0.75=12个时,底层会调用相关方法扩容,如翻倍
  • HashTable

    • 不允许null键和null值
    • HashTable是同步的(线程安全),但效率相对较低,适用于多线程环境下

Enumeration接口

  • 与Iterator接口类似,但只提供了遍历Vector/HashTable(及子类Properties)类型集合,且不支持remove操作
  • Enumeration接口与Iterator接口联系和区别
    参考:Java中,遍历数据结构Enumeration和Iterator相比有什么优劣

java.util.Collections类

  • 定义了多种集合操作方法,包括排序、取极值、批量拷贝、批量转换、循环移位、匹配性检测等功能

    方法 说明 void shuffle(List list) 扑克牌打乱排序

java.util.Arrays类

  • 定义了多种数组操作方法,包括排序、填充、转化为列表或字符串、增强的检索、深度比较等

    方法 说明
原创粉丝点击