前端-集合

集合

集合的概念

对象的容器,定义了对多个对象进行操作的常用方法。可实现数组的功能。

和数组的区别:

  1. 数组长度固定,集合长度不固定

  2. 数组可以存储基本类型和引用类型,集合只能存储引用类型

位置:java.util.*

Collection接口

Collection父接口

特点:代表一组任意类型的对象,无序,无下标,不能重复。

方法:

  • boolean add(Object obj) //添加一个对象

  • boolean addAll(Collection c)//将一个集合中的所有对象添加到此集合中。

  • void clear()//清空此集合中的所有对象。

  • boolean contains(Object o)//检查此集合中是否包含o对象

  • boolean equals(Object o)//比较此集合是否与指定对象相等。

  • boolean isEmpty()//判断此集合是否为空

  • boolean remove(Object o)//在此集合中移除o对象

  • int size()) //返回此集合中的元素个数。

  • 0bject[] toArray()//将此集合转换成数组。

List接口与实现类

List子接口

特点:有序,有下标,元素可以重复。

方法:

  • void add(int index,0bject o)//在index位置插入对象o。

  • boolean addAll(int index,Collection c)//将一个集合中的元素添加到此集合中的index位置。

  • 0bject get(int index)//返回集合中指定位置的元素。

  • List subList(int GromIndex,int oIndex)//返回fromIndex和toIndex之间的集合元素。

List实现类

ArrayList【重点】:

  • 数组结构实现,查询快,增删慢;

  • JDk1.2版本,运行效率亏啊,线程不安全。

  • 源码分析:

    • 默认容量DEFAULT_CAPACITY=10

      • 注意:如果没有向集合中添加任和元素时,容量0

    • 存放元素的数组 elementData

    • 实际的元素个数 size

    • 添加元素 add()

public boolean add(E e){
   ensureCapacityInternal(size + 1);  //Increments modCount!!
   elementData[size++] = e;
   return true;
}

Vector:

  • 数组结构实现,查询快,增删慢;

  • JDK1.0版本,运行效率慢,线程安全。

LinkedList:

  • 链表结构实现,增删快,查询慢。

泛型和工具类

泛型

Java泛型是JDK1.5中引入的一个新特性,其本质是参数化类型,把类型作为参数传递。

常见形式有泛型类、泛型接口、泛型方法。

语法:

  • <T,... >T称为类型占位符,表示一种引用类型。

好处:

  • 提高代码的重用性

  • 防止类型转换异常,提高代码的安全性

泛型集合

概念:参数化类型、类型安全的集合,强制集合元素的类型必须一致。

特点:

  • 编译时即可检查,而非运行时抛出异常。

  • 访问时,不必类型转换(拆箱)。

  • 不同泛型之间引用不能相互赋值,泛型不存在多态。

Set集合

Set子接口

特点:无序,无下标,元素不可以重复

方法:全部继承自Collection中的方法

Set实现类

HashSet【重点】:

  • 基于HasCode是实现元素不重复

  • 当存入元素的哈希码相同时,会调用equals进行确认,如结果为true,则拒绝后者存入。

TreeSet:

  • 基于排列顺序实现元素不重复ble

  • 实现了SorteSet接口,对集合元素自动排序

  • 元素对象的类型必须实现Comparable接口,指定排序规则

  • 通过CompareTo方法确定是否为重复元素

Map接口与实现类

Map父接口

特点:存储一堆数据(Key-Value),无序,无下标,键不可重复,值可以重复

方法:

  • V put(K key,V value)//将对象存入到集合中,关联键值。key重复则覆盖原值。

  • Object get(Object key)//根据键获取对应的值

  • Set<K>//返回所有key

  • Collection<V> values()//返回包含所有值的Collection集合

  • Set<Map.Entry<K,V>>//键值匹配的Set集合

Map集合的实现类

HashMap【重点】:

  • JDK1.2版本,线程不安全,运行效率快;允许用null 作为key或是value。

Hashtable:

  • JDK1.0版本,线程安全,运行效率慢,不允许null作为key或是value。

Properties:

  • Hashtable的子类,要求key和value都是String。通常用于配置文件的读取。

TreeMap:

  • 实现了SortedMap接口(是Map的子接口),可以对key自动排序。

Collections工具类

概念:集合工具类,定义了除了存取以外的集合常用方法。

方法:

  • public static void reverse(List<?> list)//反转集合中元素的顺序

  • public static void shuffle(List<?> list)//随机重置集合元素的顺序

  • public static void sort(List<?> list)//升序排序(元素类型必须实现Comparable接口)

posted @ 2021-07-18 15:19  y4396  阅读(83)  评论(0)    收藏  举报