Collection接口

本文详细介绍了Java集合框架中的Collection接口,包括其概述、基本使用、常用方法和遍历策略。重点讲解了如何通过迭代器、增强for循环以及JDK1.8后的Lambda表达式来遍历集合。此外,还强调了学习集合体系的层次结构,以提高学习效率。
摘要由CSDN通过智能技术生成


前言

java容器类库用途是保存对象。主要分为两类,本篇文章着重描述Collection集合:
  1. 单列集合(如Collection)

    一个独立元素的序列,这些元素都服从一条或多条规则。List必须按照插入的顺序保存元素,Set不能有重复元素。Queue按照排队规则来确定对象产生的顺序(通常与插入的顺序相同)。

  2. 双列集合(如Map)

    一组成对的键值对对象,允许使用键来查找值,将数字和对象关联到一起。映射表允许我们使用另一个对象来查找某个对象,也被称为关联数组或字典。Map很强大


一、概述

  1.Collection是单列集合的顶层接口,表示一组对象(Collection的元素)
  2.Jkd不提供Collection接口的任何直接实现,他提供更具体的子接口(如 List (元素可重复的) / Set (元素不可重复的) ),可以通过子接口实现(通过子接口的实现类多态地实现),具体内容请前往如下链接:List/Set


二、基本使用

  1.创建集合对象
  2.创建集合元素+添加集合元素
  3.输出集合对象

代码如下(示例):

import java.util.ArrayList;
import java.util.Collection;

/**
 * @author 不想掉头发$
 * @version 1.0
 * @date 2021年08月20日
 */
public class CollectionDemo01 {
    /**
     *
     * 创建Collection 集合对象
     * 多态方式
     * ArrayList()
     */
    public static void main(String[] args) {
        //创建Colection集合对象
        Collection<String> collection = new ArrayList<String>();

        //(创建集合元素,添加入集合)
        //这里相当于直接创建了String引用对象加入集合
        //若其他类如自定义的Student类则需要先创建对象
        collection.add("hello");
        collection.add("world");
        collection.add("java");

        //输出集合对象
        //ArrayList中重写了toString方法输出格式为[hello, world, java]
        System.out.println(collection);
    }
}

三、常用方法

1.添加元素 :boolen add(E e)
2.删除元素 :boolen remove(Object o)
3.清空集合 :void clear()
4.判断集合是否存在指定元素 : boolen contains(Object o)
5.判断集合是否为空 : boolean isEmpty()
6.集合长度,即集合中的元素个数 : int size()

代码如下(示例):

/**
 * @author 不想掉头发$
 * @version 1.0
 * @date 2021年08月20日
 */

import java.util.ArrayList;
import java.util.Collection;

/**
 * Collection 集合 常用方法
 *   boolen add(E e) : 添加元素
 *   boolen remove(Object o) : 从集合中移除指定元素
 *   void clear() : 清空集合
 *   boolen contains(Object o) : 判断集合是否存在指定元素
 *   boolean isEmpty() : 判断集合是否为空
 *   int size() : 集合长度,即集合中的元素个数
 */
public class CollectionDemo02 {
    public static void main(String[] args) {
        //创建集合对象
        Collection<String> collection = new ArrayList<String>();

        //boolean add(E e) : 添加元素 返回结果是布尔类型 且永远返回true
        //ArrayList 集合是 List 接口 的实现 ,(元素可以重复)
        //Alt + 7 快捷查看 structs 方便查看类中模块
        collection.add("hello");
        collection.add("world");
        collection.add("java");

        //boolen remove(Object o) : 从集合中移除指定元素
        System.out.println(collection.remove("java"));
        //若集合中没有该元素则返回false
        System.out.println(collection.remove("123"));

        //void clear() : 清空集合
        collection.clear();

        //boolen contains(Object o) : 判断集合是否存在指定元素
        System.out.println(collection.contains("java"));

        //boolean isEmpty() : 判断集合是否为空
        System.out.println(collection.isEmpty());

        //int size() : 集合长度,即集合中的元素个数
        System.out.println(collection.size());
    }
}


四、遍历方法

补充概念:迭代器:
链接: Iterator.

1.迭代器遍历

涉及的方法:
  public Iterator iterator(): 获取集合对应的迭代器,用来遍历集合中的元素的
  E next():获取下一个元素值!
  boolean hasNext():判断是否有下一个元素,有返回true ,反之。
代码流程:
  1.先获取当前集合的迭代器
  Iterator it = collection.iterator();
  2.定义一个while循环,条件为it.hasNext()。
  通过it.hasNext()询问是否有下一个元素,通过it.next()取出下一个元素。

代码如下(示例):

/**
 * @author 不想掉头发$
 * @version 1.0
 * @date 2021年08月20日
 */

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;


public class IteratorDemo {
    public static void main(String[] args) {
        /**
         * Iterator : 迭代器: 集合的专用遍历方式
         * Iterator<E> interator() :返回此集合中元素的迭代器,
         * 迭代器是通过集合的iterator() 方法得到的,所以说它是依赖于集合而存在的
         *
         * Iterator 中的常用方法
         *   E next(): 返回迭代器中的下一个元素
         *   boolean hasNext(): 如果迭代器中有更多元素,返回true
         */

        //创建Collection 集合对象
        Collection<String> collection = new ArrayList<>();

        //添加元素
        collection.add("hello");
        collection.add("world");
        collection.add("java");

        //创建迭代器 :快捷键 Ctrl + Alt + v,返回集合中元素
        Iterator<String> iterator = collection.iterator();
     
        //while()循环遍历
        //后面会用到增强for 来处理循环输出
        while(iterator.hasNext()){
            //一般的规范形式
            String s = iterator.next();
            System.out.println(s);
        }
    }
}

2.增强for /for-each loop 语句

从jdk5之后,实现 Interface Iterable ,允许对象成为增强for 语句 的目标,Iterable 接口 中有 抽象 方法 iterator()
注意:底层由迭代器实现
   增强for循环必须有目标,目标只能是Collection集合和数组

定义格式:
  for(集合/数组的数据类型 变量名;集合名/数组名){
      输出(或其他操作) ;
    }
例子:
  private static void demo(){
    int [] arr={1,2,3,4,4,5,5,6,3};
  //for循环增强遍历
  for(int i,arr){
    sout(i);//1,2,3,4,4,5,5,6,3
    }
  }

代码如下(示例):

/**
 * @author 不想掉头发$
 * @version 1.0
 * @date 2021年08月20日
 */

import java.util.ArrayList;
import java.util.Collection;



public class ForEachDemo {
    public static void main(String[] args) {
       
        //创建Collection 集合对象
        Collection<String> collection = new ArrayList<>();

        //添加元素
        collection.add("hello");
        collection.add("world");
        collection.add("java");

        //增强for循环遍历
        for (String s : collection){
            System.out.println(s);
        }
    }
}

3.JDK 1.8开始之后的新技术Lambda表达式

可以了解一下。

代码如下(示例):

/**
 * @author 不想掉头发$
 * @version 1.0
 * @date 2021年08月20日
 */

import java.util.ArrayList;
import java.util.Collection;


public class LambdaForEachDemo {
    public static void main(String[] args) {

        //创建Collection 集合对象
        Collection<String> collection = new ArrayList<>();

        //添加元素
        collection.add("hello");
        collection.add("world");
        collection.add("java");
        Collection<String> lists = new ArrayList<>();
       
        System.out.println(collection);
        //   [hello, world, java]
        //   s
        collection.forEach(s -> {
            System.out.println(s);
        });
//      collection.forEach(s ->  System.out.println(s));
//      collection.forEach(System.out::println);

    }
}


总结

  学习集合体系可以通过先学习顶层接口之后再学习,顶层接口下的其它接口,再到实现类,这样就不用每次都去学习一遍这些接口和实现类的共有特性,只需要向下了解每个接口或实现类的特点就能达到学习目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值