Collection集合_笔记

Collection集合

在这里插入图片描述

Collection是单列集合的顶层接口,其实现的子类有List集合和Set集合。

  • List集合:有序,可重复

  • Set集合:无序,不可重复

  • 由于Collection是一个接口,所以当要实现一个Collection对象时,只能通过实例化其子类对象的方式来创建。

  • 实现方式:Collection list = new ArrayList<>();

方法描述
public boolean add(E e)添加元素
public boolean remove(Object o)从该集合中删除指定元素的单个实例
public void clear()清空集合对象
public boolean isEmpty()判断集合是否为空
public boolean contains(Object o)判断集合中是否包含指定的元素
public int size()返回集合中元素个数
public Iterator<E> iterator()获取集合对象对应的迭代器

List集合

  • 有序集合(也称为序列 )。该界面的用户可以精确控制列表中每个元素的插入位置。 用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素。
  • List接口提供了一个特殊的迭代器,称为ListIterator,其允许元件插入和更换,并且除了该Iterator接口提供正常操作的双向访问。 提供了一种方法来获取从列表中的指定位置开始的列表迭代器。
    *实现方式:List list = new ArrayList<>();
方法描述
public void add(int index, E element)指定位置添加数据
public E remove(int index)删除指定位置的元素,返会删除的元素
public E set(int index, E element)在指定位置插入元素,返会插入的元素
public E get(int index)获取指定位置的元素
  • 列表迭代器ListIterator要想使用列表迭代器的hasProvious方法必须先进行正向遍历。
方法描述
public ListIterator listIterator()根据List对象获取对应的ListInterator列表迭代器
public boolean hasProvious()判断列表迭代器中是否有上一个元素
public boolean Provious()获取列表迭代器中的上一个元素

ArrayList集合

底层数据结构是数组,查询和修改快,增删慢。
代码实现:ArrayList简单遍历

	ArrayList<String> list = new ArrayList<>();
    list.add("hello");
    list.add("world");
    list.add("java");
    //普通迭代器
    Iterator<String> it = list.iterator();
    while (it.hasNext()){
        System.out.println(it.next());
    }
    System.out.println("-----------------------");
    //列表迭代器
    ListIterator<String> lit = list.listIterator();
    while (lit.hasNext()){
        System.out.println(lit.next());
    }
    System.out.println("-----------------------");
    //for循环方式一:
    for (int i = 0; i < list.size(); i++) {
        System.out.println(list.get(i));
    }
    System.out.println("-----------------------");
    //for循环方式二:
    for (String s : list) {
        System.out.println(s);
    }

运行结果:

hello
world
java
-----------------------
hello
world
java
-----------------------
hello
world
java
-----------------------
hello
world
java

LinkedList集合

·底层数据结构是链表,查询和修改慢,增删快。
·LinkedList集合主要是用来操作头和尾元素的

方法描述
public void addFirst(E e)往列表的开头插入指定的元素
public void addLast(E e)往列表的末尾插入指定的元素
public E removeFirst()删除列表中的第一个元素, 并返回被删除的元素
public E removeLast()删除列表中的最后一个元素, 并返回被删除的元素
public E getFirst()返回列表的第一个元素
public E getLast()返回列表的最后一个元素

代码实现:LinkedList常用方法

	LinkedList<String> list = new LinkedList<>();
    list.add("hello");
    list.addFirst("head");
    list.addLast("foot");
    System.out.println("list = " + list);
    System.out.println(list.set(0, "头"));
    System.out.println(list.set(2, "尾"));
    System.out.println("list = " + list);
    System.out.println(list.get(1));

运行结果

list = [head, hello, foot]
head
foot
list = [头, hello, 尾]
hello

Set集合

Collection集合的子体系,Set元素集合特点是无序且唯一

  1. Set集合是一个接口,无法直接实例化,可以通过其实例化子类来创建;
  2. Set集合没有索引,不可以使用普通for循环遍历;
  3. Set集合常用的子类:HashSet和TreeSet。

HashSet集合

  1. 底层数据结构是哈希表;
  2. 不保证元素的存取顺序;
  3. 不可以使用普通for循环遍历
  4. 不包含重复元素
哈希值

指的是JDK根据对象的地址,或者字符串,或者数字算出来的int类型的数值。

方法描述
public int hashCode()根据对象,获取对应的哈希值
LinkedHashSet集合

HashSet的子类

  1. 哈希表和链表实现的Set接口,具有可预测的迭代次序;
  2. 由链表保证次序,存取顺序一致;
  3. 由哈希表保证元素唯一。
  4. 没有索引,不可使用普通for循环遍历

TreeSet集合

  1. TreeSet集合存储的数据可以排序,排序方式根据比较器定义;
  2. 没有索引,不能使用普通for循环遍历;
  3. 不包含同一元素。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值