JavaCollection集合

news2024/9/28 21:19:32

5 Collection集合

5.1 Collection集合概述

  • 是单列集合的顶层接口,它表示一组对象,这些对象也称Collection元素
  • JDK不提供此接口的直接实现,它提供更具体的子接口(Set 和 List)实现
package ceshi;

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

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

        //添加元素
        c.add("hello");
        c.add("world");
        c.add("java");
        System.out.println(c); //[hello, world, java]
    }
}

5.2 Collection集合常用方法(查看所有源码快捷键)

方法名说明
public boolean add(E e)把给定的元素添加到当前集合中
public boolean remove(E e)把给定的对象在当前集合中删除
public void clear()清空集合中所有的元素
public boolean contains(Object obj) [kənˈteɪnz] 包括判断当前集合中是否存在指定的对象
public boolean isEmpty() [ˈenpti]判断当前集合是否为空
public int size()返回集合中元素的个数
public Object[] toArray( )把集合中的元素,储存到数组中
  • 快捷键:Alt+7 打开源码中所有方法
package ceshi;

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

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

        //1、public boolean add(E e) 	把给定的元素添加到当前集合中
        c.add("hello");
        c.add("hello");
        System.out.println(c); //[hello, hello] ;ArrayList可以存储重复元素

        //2、public boolean remove(E e) 	把给定的对象在当前集合中删除
        /*System.out.println(c.remove("hello")); //true
        System.out.println(c.remove("java")); //false
        System.out.println(c); //[hello]*/

        //3、public void clear() 	清空集合中所有的元素
        /*c.clear();
        System.out.println(c); //[]*/

        //4、public boolean contains(Object obj) 	判断当前集合中是否存在指定的对象
        /*System.out.println(c.contains("java")); //false
        System.out.println(c.contains("hello")); //true*/

        //5、public boolean isEmpty() 	判断当前集合是否为空
//        System.out.println(c.isEmpty()); //false

        //6、public int size() 	返回集合中元素的个数
//        System.out.println(c.size()); //2

        //7、public Object[] toArray( 	把集合中的元素,储存到数组中
        Object[] arr = c.toArray();
        for(int i= 0;i< arr.length;i++) {
            System.out.print(arr[i]+","); //hello,hello
        }
        
    }
}

5.3 Collection集合的遍历

  • Collection 集合遍历有三种方法:
  • 迭代器
  • foreach(增强for循环)
  • DK 1.8 开始的新技术 Lambda 表达式(了解)

5.3.1 Iterator['lɪtəreɪtə]迭代器遍历集合

  • lterator:迭代器,集合的专用遍历方式
    • Iterator<E> iterator():返回此集合中元素的迭代器,通过集合的iterator()方法得到
    • 迭代器是通过集合的**iterator()**方法得到的,所以我们说它是依赖于集合而存在的
  • Iterator中的常用方法
方法名说明
E next()获取迭代中的下一个元素
boolean hasNext()如果迭代具有更多元素,则返回true

在这里插入图片描述

package ceshi;

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

public class IteratorDemo {
    public static void main(String[] args) {
        Collection<String>  c = new ArrayList<String>();

        c.add("java");
        c.add("天下");
        c.add("无敌");

        //Iterator<E> iterator():返回此集合中元素的迭代器,通过集合的iterator0方法得到
        Iterator<String> it = c.iterator(); //c.iterator();按下Ctrl+alt+v
        /*public Iterator<E> iterator() {
            return new ArrayList.Itr(); //返回的是实现类的对象
        }

        private class Itr implements Iterator<E> {...}
        */

        //E next()
        /*System.out.println(it.next()); //java
        System.out.println(it.next());
        System.out.println(it.next());
        System.out.println(it.next()); //NoSuchElementException:表示请求的元素不存在*/

        //boolean hasNext() 	如果迭代具有更多元素,则返回true
        /*if(it.hasNext()) {
            System.out.println(it.next()); //java
        }
        if(it.hasNext()) {
            System.out.println(it.next()); //天下
        }
        if(it.hasNext()) {
            System.out.println(it.next()); //无敌
        }
        if(it.hasNext()) {
            System.out.println(it.next()); //无输出
        } */

        //while循环改良
        while(it.hasNext()) {
            String s = it.next();
            System.out.println(s);  //java
                                    //天下
                                    //无敌
        }
    }
}
  • 案例
    在这里插入图片描述
package ceshi;

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

public class CollectionDemo {
    public static void main(String[] args) {
        //2、创建Collection集合对象
        Collection<Student> c = new ArrayList<Student>();

        //3、创建学生对象
        Student s1 = new Student("y1", 10);
        Student s2 = new Student("y2", 20);
        Student s3 = new Student("y3", 30);

        //4、把学生添加到集合
        c.add(s1);
        c.add(s2);
        c.add(s3);

        //5、遍历集合
        Iterator<Student> it = c.iterator(); //必须集合添加完毕后创建迭代器对象
        while (it.hasNext()) {
            Student s = it.next();
            System.out.println(s.getName() + "," + s.getAge());
            /*
            y1,10
            y2,20
            y3,30
            */
        }
    }
}

5.4 Collections工具类

  • 包:java.util.Collections
  • Collections 并不属于集合,而是用来操作集合的工具类
  • 常用方法(全是静态修饰,用类名调用)
方法名说明
public static <T extends Comparable<?super T>> void sort(List list)将指定的列表按升序排序
public static void reverse(List<?> list)反转指定列表中元素顺序
public static void shuffle(List<?> list)使用默认的随机源随机排序指定的列表
package ceshi;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class MapDemo {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();

        list.add(30);
        list.add(20);
        list.add(50);
        list.add(10);
        list.add(40);
        System.out.println(list); //[30, 20, 50, 10, 40]

        //1,public static <T extends Comparable<?super T>> void sort(List list) 	将指定的列表按升序排序
        /*Collections.sort(list);
        System.out.println(list); //[10, 20, 30, 40, 50]*/

        //2,public static void reverse(List<?> list) 	反转指定列表中元素顺序
        /*Collections.reverse(list);
        System.out.println(list); //[40, 10, 50, 20, 30]*/

        //3,public static void shuffle(List<?> list) 	使用默认的随机源随机排序指定的列表
        Collections.shuffle(list);
        System.out.println(list);
        //第一次运行[10, 40, 30, 50, 20]
        //第二次运行[10, 30, 20, 50, 40]
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/339442.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++1】函数重载,类和对象,引用,/string类,vector容器,类继承和多态,/socket,进程信号

文章目录1.函数重载&#xff1a;writetofile()&#xff0c;Ctrue和false&#xff0c;C0和非02.类和对象&#xff1a;vprintf构造函数&#xff1a;对成员变量初始化析构函数&#xff1a;一个类只有一个&#xff0c;不允许被重载3.引用&#xff1a;C中&取地址&#xff0c;C中…

C语言深度剖析之文件操作

&#x1f497; &#x1f497; 博客:小怡同学 &#x1f497; &#x1f497; 个人简介:编程小萌新 &#x1f497; &#x1f497; 如果博客对大家有用的话&#xff0c;请点赞关注加关注 &#x1f31e; 什么是文件 磁盘上的文件是文件。 但是在程序设计中&#xff0c;我们一般谈的文…

计算机组成原理(四)

1.理解存储器的分类方法&#xff1b;理解存储器的层次结构&#xff1b;熟悉存储器的几个技术指标&#xff08;主要是存储容量、存取时间、存取周期、存储器带宽等&#xff09;&#xff1b; 存储器分类方法&#xff1a;   按与CPU的连接和功能分类&#xff1a;     主存储…

关于HLS直播Buffer PlayQueue多图分析

文章目录前言hls配置m3u8单码流1.开始进入播放页&#xff0c;默认是暂停态2.等几十秒后的状态3.开始播放后的状态其他多码流前言 hls配置 backBufferLength:60 // 默认无限制 缓存媒体播放后要保留的最长持续时间&#xff08;以秒为单位&#xff09;。 liveSyncDurationCount…

【优化算法1】模拟退火算法(含MATLAB实例)

模拟退火算法&#xff08;含MATLAB实例&#xff09;模拟退火算法1.1 简介1.2 原理1.3 MATLAB实例模拟退火算法 1.1 简介 模拟退火算法的思想借鉴于物体退火过程&#xff1a;当温度很高时&#xff0c;物体内能比较大&#xff0c;其内部粒子处于快速无序运动状态&#xff1b;当…

【计算机网络期末复习】第一章 概述

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4e3;专栏定位&#xff1a;为想复习学校计算机网络课程的同学提供重点大纲&#xff0c;帮助大家渡过期末考~ &#x1f4da;专栏地址&#xff1a; ❤️如果有收获的话&#xff0c;欢迎点…

第一个C语言代码(visual studin创建调试以及项目文件功能讲解)

这里我主要使用visual Studio进行编程 目录 一.创建项目 二.编写代码 1.代码编写 2.代码分析 3.main() 4.注释符 5.{} 花括号 6.声明 7.赋值 8.printf()函数 9.return 0; 一.创建项目 这里大家可能会比较疑惑&#xff0c;为啥都是C&#xff0c;没看见C的项目&…

C++:AVL树

AVL树的概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查找元素相当于在顺序表中搜索元素&#xff0c;效率低下&#xff0c;时间复杂度为O&#xff08;N&#xff09;&#xff1b; 两位俄罗斯的数学家G.M.Ade…

机试_4_数学问题

在机试中&#xff0c;我们经常会面对这样一类问题&#xff0c;它们并不涉及很深奥的算法和数据结构&#xff0c;而只与数理逻辑相关&#xff0c;将这类题目称为数学问题。 这类问题通常不需要用到特别高深的数学知识&#xff0c;而只需要掌握简单的数理逻辑知识。本文重点记录…

解决访问GitHub时出现的“您的连接不是私密连接”的问题!

Content问题描述解决办法问题描述 访问github出现您的连接不是私密连接问题&#xff0c;无法正常访问&#xff0c;如下图所示&#xff1a; 解决办法 修改hosts文件。hosts文件位于&#xff1a;C:\Windows\System32\drivers\etc\hosts 首先在https://www.ipaddress.com/查找两…

Linux之case语句和循环语句

一、case语句1.case语句的结构case语句主要适用于以下情况&#xff1a;某个变量存在多种取值&#xff0c;需要对其中的每一种取值分别执行不同的命令序列。这种情况与多分支的if语句非常相似&#xff0c;只不过if语句需要判断多个不同的条件&#xff0c;而case语句只是判断一个…

Linux高级命令之查找文件命令

查找文件命令学习目标能够说出查找文件使用的命令1. find命令及选项的使用命令说明find在指定目录下查找文件(包括目录)find命令选项:选项说明-name根据文件名(包括目录名)字查找find命令及选项的效果图:2. find命令结合通配符的使用通配符:是一种特殊语句&#xff0c;主要有星…

Linux中几个在终端中有趣的命令

uhh…最近我不知道该更新些什么&#xff0c;所以就更新Linux几个很有趣的命令 文章目录前言1.命令&#xff1a;sl安装 sl输出2. 命令&#xff1a;telnet命令&#xff1a;fortune安装fortune4.命令&#xff1a;rev&#xff08;反转&#xff09;安装rev5. 命令&#xff1a;factor…

第二章 Opencv图像处理基本操作

目录1.读取图像1-1.imread()方法2.显示图像2-1.imshow()方法2-2.waitKey()方法2-3.destroyAllWindows()方法2-4.小总结3.保存图像3-1.imwrite()方法4.查看图像属性4-1.常见的三个图像属性1.读取图像 要对一幅图像进行处理&#xff0c;第一件事就是要读取这幅图像。 1-1.imread(…

Vue驼峰与短横线分割命名中有哪些坑

目录 0.前言 驼峰和短横线分割命名注意事项 组件注册命名 父子组件数据传递时命名 父子组件函数传递 0.前言 Vue驼峰命名法指的是将变量以驼峰形式命名&#xff0c;例如 userName、userId 等&#xff0c;而短横线分隔符法则指的是用短横线分隔变量名&#xff0c;例如 user…

Python 高级编程之生成器与协程进阶(五)

文章目录一、概述二、生成器1&#xff09;生成器和迭代器的区别2&#xff09;生成器创建方式1、通过生成器函数创建2、通过生成器表达式创建3&#xff09;生成器表达式4&#xff09;yield关键字5&#xff09;生成器函数6&#xff09;return 和 yield 异同7&#xff09;yield的使…

RocketMQ底层源码解——事务消息的实现

1. 简介 RocketMQ自身实现了事务消息&#xff0c;可以通过这个机制来实现一些对数据一致性有强需求的场景&#xff0c;保证上下游数据的一致性。 以电商交易场景为例&#xff0c;用户支付订单这一核心操作的同时会涉及到下游物流发货、积分变更、购物车状态清空等多个子系统…

Linux高级命令之压缩和解压缩命令

压缩和解压缩命令学习目标能够使用tar命令完成文件的压缩和解压缩1. 压缩格式的介绍Linux默认支持的压缩格式:.gz.bz2.zip说明:.gz和.bz2的压缩包需要使用tar命令来压缩和解压缩.zip的压缩包需要使用zip命令来压缩&#xff0c;使用unzip命令来解压缩压缩目的:节省磁盘空间2. ta…

如何在VMware虚拟机上安装运行Mac OS系统(详细图文教程)

一、安装前准备 虚拟机运行软件&#xff1a;VMware Workstation Pro&#xff0c;版本&#xff1a;16.0.0 。VMware Mac OS支持套件&#xff1a;Unlocker。Mac OS系统镜像。 如果VMware 在没有安装Unlocker的情况下启动&#xff0c;在选择客户机操作系统时没有支持Mac OS的选项…

Mock.js初步使用(浏览器端)

Mock.js&#xff1a;生成随机数据&#xff0c;拦截 Ajax 请求。官方地址&#xff1a;http://mockjs.com/第一个demodemo.html<!DOCTYPE html> <html> <head><meta charset"utf-8"><title>mockjs demo</title> </head> <…