JAVA初步了解JAVA集合框架

集合框架


迭代(Iterator)

​ 在Java中,有很多的数据容器,对于这些的操作有很多的共性。Java采用了迭代器来为各种容器提供了公共的操作接口。这样使得对容器的遍历操作与其具体的底层实现相隔离,达到解耦的效果。

方法 作用
hasNext() 判断是否还有下一个元素可以迭代,返回true或false
next() 返回迭代的下一个元素
remove() 移除当前迭代返回的元素(可选,非必须)
List <String> list = new ArrayList<>();
list.add("aa");
list.add("bb");
list.add("cc");
// 1.使用for循环判断是否还有迭代元素
for(Itrator<String> it1 = list.iterator();it1.hasNext();){
    
    
    //若还有迭代元素,则对迭代当前返回的元素进行操作
    it1.next();
}
// 2.使用while循环进行迭代
Itrator<String> it2 = list.iterator();
while(it2.hasNext){
    
    
    //对迭代当前返回的元素进行操作
    it2.next();
}

​ Iterator只提供了删除元素的方法remove,如果我们想要在遍历的时候添加元素就要使用ListIterator了, ListIterator接口继承了Iterator接口,它允许程序员按照任一方向(Iterator只能做到正向遍历,而ListIterator正反向遍历都可以做到)遍历列表,迭代期间修改列表,并获得迭代器在列表中的当前位置。


集合的概念

  1. 概念:对象的容器,定义了对多个对象进行操作的常用方法,可实现数组的功能
  2. 和数组的区别:
    • 数组长度固定,集合长度不固定
      • 数组可以存储基本类型和引用类型,集合只能存储引用类型(想要存储基本类型可以使用装箱)
  3. 位置:java.util.*;

Collection接口

在这里插入图片描述

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

  2. 方法:

方法 作用
boolean add(Object obj) 添加一个对象(obj)
boolean addAll(Collection c) 将一个集合中的所有对象添加到此集合中
void clear() 清空此集合中的所有对象
boolean contains(Object obj) 检查此集合中是否包含obj对象
boolean equals(Object obj) 比较此集合是否与指定对象(obj)相等
boolean isEmpty() 判断此集合是否为空
boolean remove(Object obj) 在此集合中移除obj对象
int size() 返回此集合中的元素个数
Object[] toArray() 将此集合转换成数组

List接口与实现类

List接口

  1. 特点:有序,有下标,元素可重复
  2. 方法:
方法 作用
void add(int index, Object o) 在index位置插入对象o
boolean addAll(int index, Collection c) 将一个集合中的元素添加到此集合中的index位置
Object get(int index) 返回集合中指定位置的元素
List subList(int fromIndex. int toIndex) 返回fromIndex和toIndex之间的集合元素

List实现类

  1. ArrayList:
    • 数组结构实现,查询快,增删慢
    • JDK1.2版本,运行效率快,线程不安全
  2. Vector:
    • 数组结构实现,查询快,增删慢
    • JDK1.0版本,运行效率慢,线程安全
  3. LinkedList:
    • 链表结构实现,增删快,查询慢

ArrayList与LinkedList的区别:

ArrayList必须开辟连续空间,查询快,增删慢

LinkedList:无需开辟连续空间,查询慢,增删快

泛型和工具类

泛型

  1. Java泛型是JDK1.5中引入的一个新特性,其本质是参数化类型,把类型作为参数传递
  2. 常见形式有泛型类,泛型接口,泛型方法
  3. 语法:<T,…> T称为占位符,表示一种引用类型
  4. 好处:
    • 提高代码的重用性
    • 防止类型转换异常,提高代码的安全性

泛型集合

  1. 概念:参数化类型,类型安全的集合,强制集合元素的类型必须一致
  2. 特点:
    • 编译时即可检查,而非运行时抛出异常
    • 访问时,不必类型转换(拆箱)
    • 不同泛型之间引用不能相互赋值,泛型不存在多态

Set接口与实现类

Set接口

Set实现类

  1. HashSet:

    • 基于HashCode实现元素不重复
    • 当存入元素的哈希码相同时,会调用equals进行确认,如果结果为true,则拒绝后者进入
  2. TreeSet:

    • 基于排列顺序实现元素不重复
    • 实现了SortedSet接口,对集合元素自动排列
    • 元素对象的类型必须实现Comparable接口,指定排序规则
    • 通过CompareTo方法确定是否为重复元素

Map接口与实现类

Map接口的特点:

  1. 用于存储任意键值对(Key-Value)
  2. 键:无序,无下标,不允许重复
  3. 值:无序,无下标,允许重复

方法:

方法 作用
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集合的实现类

  1. Hashmap:

    ​ JDK1.2版本,线程不安全,运行效率快,允许使用null作为key或者value

  2. Hashtable:

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

  3. Properties:

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

  4. TreeMap:

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

Cloortions工具类

  1. 概念: 集合工具类,定义了除了存取意外的集合常用方法
  2. 方法:
方法 作用
public static void reverse (List< T > list) 反转集合中元素的顺序
public static void shuffle (List< T > list) 随机重置集合元素的顺序
public static void sort (List< T > list) 升序排序(元素类型必须实现Comparable接口)

猜你喜欢

转载自blog.csdn.net/Hassder/article/details/109168379