首页 > 编程语言 >java_day12_Collection、List

java_day12_Collection、List

时间:2024-10-16 17:35:41浏览次数:1  
标签:java list1 List System Collection add println c1 out

Collection

Collection【接口】:
    我们通过帮助文档发现,Collection是一个接口,不能直接new对象
    根据元素是否可以发生重复,继续分类
    - List【接口】元素可以发生重复,且有索引的概念
        ArrayList
    - Set【接口】元素不可以发生重复,没有索引

借助ArrayList子类对象来使用Collection接口中的方法

学习java中任意一个集合的步骤:
1、创建相关集合对象
2、创建元素对象
3、将元素添加到集合中
4、遍历集合

Collection中的成员方法:
    boolean add(E e)
    boolean remove(Object o)
    void clear()
    boolean contains(Object o)
    boolean isEmpty()
    int size()

代码案例

public class CollectionDemo1 {
    public static void main(String[] args) {
        //借助ArrayList创建对象来使用Collection接口中的方法
        // 1、创建相关集合对象
        Collection c1 = new ArrayList();

        //boolean add(Object e)
        c1.add(100); //这里涉及到自动装箱 int -> Integer
        c1.add(true);
        c1.add(12.34);
        c1.add(1000L);
        c1.add(100);
        c1.add(12.34);
        // 重写toString()方法的类是ArrayList类的父类的父类中重写的。
        // 底层是使用StringBuilder实现的
        System.out.println("c1: " + c1);
        //注意:我们今后使用集合的时候,规定一个集合只能存储一种数据类型的元素
        System.out.println("-----------------------------------------");
        //[100, true, 12.34, 1000, 100, 12.34]
        //boolean remove(Object o) 从集合中删除一个元素,只会删除最左边的一个匹配元素
        c1.remove(100);
        System.out.println("c1: " + c1);
        System.out.println("-----------------------------------------");
        //void clear() 清空集合元素
//        c1.clear();
//        System.out.println("c1: " + c1);
        System.out.println("-----------------------------------------");
        //boolean contains(Object o) 判断Collection集合中是否包含某个元素
        System.out.println(c1.contains(12.34));
        System.out.println("-----------------------------------------");
        //boolean isEmpty() 判断Collection集合是否为空
        System.out.println(c1.isEmpty());
        System.out.println("-----------------------------------------");
        //int size() 获取集合的长度【元素的个数】
        System.out.println(c1.size());


    }
}
boolean addAll(Collection c)
boolean removeAll(Collection c)
boolean containsAll(Collection c)
boolean retainAll(Collection c)

代码案例

public class CollectionDemo2 {
    public static void main(String[] args) {
        //创建集合对象
        Collection c1 = new ArrayList();
        c1.add("java");
        c1.add("maven");
        c1.add("clickhouse");
        c1.add("redis");

        Collection c2 = new ArrayList();
        c2.add("java");
        c2.add("hadoop");
        c2.add("maven");
        c2.add("hive");
        c2.add("hbase");
        c2.add("数据采集");

        System.out.println("c1: "+c1);
        System.out.println("c2: "+c2);

        System.out.println("------------------------------");
        //boolean addAll(Collection c)
//        c1.addAll(c2);
//        System.out.println("c1: "+c1);
//        System.out.println("c2: "+c2);

        //boolean removeAll(Collection c)
//        c1.removeAll(c2);
//        System.out.println("c1: "+c1);
//        System.out.println("c2: "+c2);

        //boolean containsAll(Collection c)
//        System.out.println(c1.containsAll(c2));
//        System.out.println("c1: "+c1);
//        System.out.println("c2: "+c2);

        //boolean retainAll(Collection c) 求交集 将结果保存在调用方法的对象集合中
        c1.retainAll(c2);
        System.out.println("c1: "+c1);
        System.out.println("c2: "+c2);

    }
}

遍历集合

1、Object[] toArray() 把集合转成数组,可以实现集合的遍历
public class CollectionDemo3 {
    public static void main(String[] args) {
        Collection c1 = new ArrayList();
        c1.add("hello");
        c1.add("world");
        c1.add("java");
        c1.add("hadoop");
        c1.add("world");

        Object[] objects = c1.toArray();
        for(int i=0;i<objects.length;i++){
            Object obj = objects[i]; // "hello"
            String s = (String)obj;
            //向下转型,才可使用元素自己类型的方法
            System.out.println(s+"-"+s.length());
        }



    }
}

Iterator iterator() 迭代器,集合的专用遍历方式
代码案例

public class CollectionDemo4 {
    public static void main(String[] args) {
        Collection c1 = new ArrayList();
        c1.add("hello");
        c1.add("world");
        c1.add("java");
        c1.add("hadoop");
        c1.add("world");

        //Collection类型的集合本身是不可以直接遍历的
        //需要生成对应的迭代器,迭代器中存储了集合中的元素
        //将来遍历迭代器就可以获取集合中的元素了
        //生成迭代器
        Iterator iterator = c1.iterator(); // new Itr()
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next()); // NoSuchElementException
        //每一个迭代器,都有一个独立指针,每调用一次next()方法,就会向后移动一次指针取数据
        //如何判断下一个位置上是否有元素呢?
        while (iterator.hasNext()){
            Object obj = iterator.next();
            String s = (String)obj;
            System.out.println(s+"-"+s.length());
        }

    }
}

List

List集合:元素可以发生重复,有序(指存储和取出的顺序一致)
Collection【接口】:
     - List【接口】
        ArrayList
     - Set【接口】

List集合中特有的成员方法:
    void add(int index,E element)
    E remove(int index)
    E get(int index)
    E set(int index,E element)
    ListIterator listIterator()

代码案例

public class ListDemo1 {
    public static void main(String[] args) {
        List list1 = new ArrayList();

        list1.add("hello");
        list1.add("apple");
        list1.add("banana");
        list1.add("watermelon");
        list1.add("mango");

        System.out.println("list1: " + list1);

        System.out.println("==================================");
        //因为List相关集合具备索引的特点,List集合根据索引提供一些其它集合没有的方法
        //void add(int index,E element) 指定索引位置添加元素 grape
        list1.add(2,"grape");
        System.out.println("list1: " + list1);
        System.out.println("==================================");
        // E remove(int index) 根据索引从集合中移除元素
        System.out.println(list1.remove(2));
        System.out.println("list1: " + list1);
        System.out.println("==================================");
        //E get(int index) 根据索引获取对应元素
        System.out.println(list1.get(3));
        System.out.println("list1: " + list1);
        System.out.println("==================================");
        //E set(int index,E element) 指定索引位置修改元素
        System.out.println(list1.set(3, "orange"));
        System.out.println("list1: " + list1);
        System.out.println("==================================");
        //ListIterator listIterator()
        ListIterator listIterator = list1.listIterator();
        //从前向后取
        while (listIterator.hasNext()){
            System.out.println(listIterator.next());
        }
        System.out.println("==================================");
        //从后向前取
        //注意:一个集合迭代器只有一个游标,要想倒着遍历,必须先正着遍历一遍,所以该方法用的较少
        while (listIterator.hasPrevious()){
            System.out.println(listIterator.previous());
        }
    }
}
需求:遍历集合,当遇到mango的时候,向集合中添加一个元素"java"

我们发现如果使用迭代器遍历,集合发生修改的话,报错了
ConcurrentModificationException
public class ListDemo2 {
    public static void main(String[] args) {
        List list1 = new ArrayList();

        list1.add("hello");
        list1.add("apple");
        list1.add("banana");
        list1.add("watermelon");
        list1.add("mango");
        list1.add("peach");
        list1.add("pear");

        System.out.println("list1: " + list1);
        System.out.println("======================================");
        //1、转数组遍历
//        Object[] objects = list1.toArray();
//        for(int i=0;i<objects.length;i++){
//            Object obj = objects[i];
//            String s = (String) obj;
//            if("mango".equals(s)){
//                list1.add("java");
//            }
//        }
//        System.out.println("list1: "+list1);
//        System.out.println("======================================");

        //2、使用迭代器遍历
//        Iterator iterator = list1.iterator();
//        while (iterator.hasNext()){
//            Object obj = iterator.next();
//            String s = (String) obj;
//            if("mango".equals(s)){
//               list1.add("java");
//            }
//        }
//        System.out.println("list1: "+list1);

        //使用List集合中特有的迭代器进行遍历比较,且使用它进行添加元素
        ListIterator listIterator = list1.listIterator();
        while (listIterator.hasNext()) {
            Object obj = listIterator.next();
            String s = (String) obj;
            if ("mango".equals(s)) {
                listIterator.add("java");
            }
        }
        System.out.println("list1: " + list1);


    }
}

标签:java,list1,List,System,Collection,add,println,c1,out
From: https://www.cnblogs.com/w-ll/p/18470413

相关文章

  • <Leetcode:算法题及解析>最大子数组和(Javascript版)
    题目描述:给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。本题可以使用Kadane's算法实现,这是一种用于解决最大子数组和问题的高效算法。它由JosephBornKadane在1984年提出。这个算法的核......
  • jmeter压测问题: JAVA.NET.BINDEXCEPTION: ADDRESS ALREADY IN USE: CONNECT
    1.报错信息:2. 问题排查  1)询问AI,说端口被占用。修改了jmeter的端口号后,仍是不行  2)最后找到一篇博客,真的解决了问题     我只进行了,增大端口号,减少Time_Wait, Close_WAIT没有处理,仍解决了此问题 ......
  • python如何将list排序
    python提供了对list排序的两种方法1、使用list内建函数sort排序list.sort(key=None,reverse=False)eg:In [57]: l=[27,47,3,42,19,9]In [58]: l.sort()In [59]: lOut[59]: [3, 9, 19, 27, 42, 47]上面这种是直接对l列表里面的元素排序,sort()函数还提供......
  • python+flask框架的 基于Java的外卖系统设计与实现 前台mp48(开题+程序+论文) 计算机
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着互联网技术的飞速发展,外卖服务已成为人们日常生活中不可或缺的一部分。关于外卖系统的研究,现有研究主要以技术实现和用户体验优化为主......
  • python+flask框架的 基于Java的外卖系统设计与实现前台mp48(开题+程序+论文) 计算机毕
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着互联网的快速发展和人们生活节奏的加快,外卖服务已成为现代都市生活中不可或缺的一部分。关于外卖系统的研究,现有研究主要以技术实现和......
  • 【Java后端】Spring vs SpringBoot
    在Java开发领域,Spring框架凭借其强大的功能和丰富的生态系统,一直是构建企业级应用的利器。然而,传统的Spring项目配置繁琐,启动缓慢,常常让开发者陷入XML配置和依赖管理的泥潭,极大地影响了开发效率。SpringBoot应运而生,它秉承“约定大于配置”的理念,通过自动配置、起步......
  • Python vs Java:爬虫任务中的效率比较
    爬虫技术作为一种自动化的数据采集手段,广泛应用于数据挖掘、信息聚合、内容监控等多个领域。Python和Java是两种流行的编程语言,它们都可以用来开发高效的爬虫程序。本文将探讨Python和Java在爬虫任务中的效率,并展示如何在代码中设置代理信息以提高爬虫的可用性和安全性。......
  • [Java/日志] 日志框架打印应用程序日志代码的执行情况
    0引言我常以为INFO日志级别的应用程序日志代码,不会被执行(比如,实验1中的printTestLog函数)。但今天线上的问题,证实了这个思路是错的。1验证实验版本信息jdk:1.8日志组件slf4j.version:1.7.25log4j.version:2.20.0<!--log[start]--><dependency>......
  • Java 初学 day11
    Java11常用类练习importjava.util.Scanner;/*字符串反转举例:键盘录入”abc”输出结果:”cba”*/publicclassStringTest1{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.println......
  • javaWeb项目-ssm+jsp股票交易管理系统功能介绍
    本项目源码(点击下方链接下载):java-ssm+jsp股票交易管理系统实现源码(项目源码-说明文档)资源-CSDN文库项目关键技术开发工具:IDEA、Eclipse编程语言:Java数据库:MySQL5.7+框架:ssm、Springboot前端:Vue、ElementUI关键技术:springboot、SSM、vue、MYSQL、MAVEN数据库工......