Java_collection

devtools/2024/9/24 23:15:44/

集合的体系结构

Collection 单列集合 Map 双列集合
Collection 代表单列集合,每个元素(数据)只包含一个值。
Map代表双列集合,每个元素包含两个值(键值对)。

Collection 接口、实现类

在这里插入图片描述
List系列集合:添加的元素是有序、可重复、有索引

 ArrayList、LinekdList:有序、可重复、有索引

Set系列集合:添加的元素是无序、不重复、无索引。

HashSet :无序、不重复、无索引;
LinkedHashSet:有序、不重复、无索引。
TreeSet:按照大小默认升序排序、不重复、无索引。

java">  public class CollectionTest1{public static void main(String [] args){//简单确认一下Collection集合的特点ArrayList<String> list = new ArrayList<>();list.add("java1");list.add("java2");list.add("java1");list.add("java2");System.out.println(list); HashSet<String> set = new HashSet();set.add("java1");set.add("java2");set.add("java1");set.add("java2");set.add("java3");System.out.println(set);}}

Collection 的常用方法

为啥先要学Collection的常用方法?

java">  public class CollectionTest2API{public static void main(String[] args){Collection <String> c = new ArrayList<>();//多态写法。//1.public boolean add(E e):添加元素,添加成功返回truec.add("java1");c.add("java1");c.add("java2");c.add("java2");c.add("java3");System.out.println(c);//2.public void clear();清空集合元素。c.clear();System.out.println(c);//3.public boolean isEmpty() :判断集合是否为空 是空返回true,反之。System.out.println(c.isEmpty());//false//4.public int size() :获取集合大小System.out.println(c.size());//5.public boolean contains(Object obj):判断集合中是否包含某个元素。System.out.println(c.contains("java1"));System.out.println(c.contains("Java1"));//6.public boolean remove(E e) 删除某个元素:如果有多个重复元素默认删除前面的第一个;System.out.println("java1");System.out.println(c);//7、public Object[] toArray(); 把集合转换成数组Obejct[] arr = c.toArray();System.out.println(Arrays.toString(arr));String[]arr2 = c.toArray(new String[c.size()]);System.out.println(Arrays.toString(arr2));System.out.println("-------------------------");//把一个集合的全部数据倒入到另一个集合中去。Collection<String> c1 = new ArrayList<>();c1.add("java");c1.add();Collection<String> c2 = new ArrayList<>();c2.add("java3");c2.add("java4");System.out.println(c1);System.out.println(c2);}}

常见方法如下:

方法名说明
public boolean add(E e)把给定的对象添加到当前的集合中
public void clear()清空集合中所有的元素
public boolean contains(Object obj)判断当前集合中是否包含给定的对象
public boolean isEmpty()判断当前集合是否为空
public int size()返回集合中元素的个数。
public Object[] toArray()把集合中的元素,存储到数组中

Collection 的遍历方式

迭代器概述

迭代器是用来遍历集合的专用方式(数组没有迭代器),在Java中迭代器的代表是Iterator

Collection集合获取迭代器的方法

方法名称说明
Iterator iterator返回集合器中的迭代器对象,该迭代器对象默认指向当前集合的第一个元素
方法名称说明
boolean hasNext()询问当前位置是否有元素存在,存在返回true,不存在返回false
E next()获取当前位置的元素,并同时将迭代器对象指向下一元素处。
java">  public class CollectionDemo{public static void main(String[] args){Collection<String> c = new ArrayList<>();c.add("赵敏");c.add("小昭");c.add("素素");c.add("灭绝");System.out.println(c);//使用迭代器遍历集合//1、从集合对象中获取迭代对象。Iterator<String> it = c.iterator();//System.out.println(it.next());//System.out.println(it.next());//System.out.println(it.next());//2、我们应该使用循环结合迭代器遍历集合while(it.hasNext()){String ele = it.next();System.out.println(ele);System.out.println(it.next());System.out.println(it.next());}}}

增强for循环

for(元素的数据类型 变量名:数组或者集合)
{
}
Collection <String> c = new ArrayList<>();
...for(String s : c){System.out.println(s);}

增强for可以用来遍历集合或者数组

增强for遍历集合,本质就是迭代器遍历集合的简化写法

java">  public class CollectionDemo{public static void main(String[] args){Collection<String> c = new ArrayList<>();c.add("赵敏");c.add("小昭");c.add("素素");c.add("灭绝");System.out.println(c);for(String ele :c){System.out.println(ele);}String [] names = {"迪丽热巴",“古力娜扎”,“嘻嘻哈哈”};for(String name :names){System.out.println(ele);}}}

增强for可以用来遍历集合或者数组

增强for遍历集合,本质就是迭代器遍历结合简化写法

Lambda 表达式遍历集合

得益于JDK8开始的新技术Lambda表达式,提供了一种更简单、更直接的方式来遍历集合。

需要使用Collection的如下方法来完成
方法名称说明
default void forEach(Consumer<? super T> action)结合lambda遍历集合
java">   public class CollectionDemo{public static void main(String[] args){Collection<String> c = new ArrayList<>();c.add("赵敏");c.add("小昭");c.add("素素");c.add("灭绝");System.out.println(c);//default void forEach(Consumer<? super T> action):结合Lambda表达式遍历集合c.forEach(new Consumer<String> (){@Overridepublic void accept(String s){System.out.println(s);}});c.forEach((String s) ->{System.out.println(s);});c.forEach(s-> System.out.println(s));c.forEach(System.out::println);}}

http://www.ppmy.cn/devtools/46478.html

相关文章

Jira的原理及应用详解(五)

本系列文章简介&#xff1a; 在当今快速发展的软件开发和项目管理领域&#xff0c;有效的团队协作和精确的项目进度追踪是确保项目成功的关键。Jira作为一款广受欢迎的项目和问题追踪工具&#xff0c;以其强大的功能、灵活的定制性以及卓越的用户体验&#xff0c;赢得了全球众多…

sql注入及sqlmap使用(未完)

sql注入点判断及sqlmap使用 前言Mysql数据库默认数据库1、暴库、版本2、 暴schema3、爆表、暴库4、暴列5、爆字段6、布尔、报错、延时(bp爆破)一、sql类型1、 参数类型:a、数字型b、字符型c、搜索型2、提交类型:a、POST提交注入b、GET注入c、HTTP HEAD注入d、cookie注入3、有…

Windows 宿主机访问 VirtualBox 虚拟机中创建的 docker 容器中的 mysql8.0 的数据

一、场景需求 在开发环境中&#xff0c;一般使用 windows 系统进行开发&#xff0c;但需要在 linux 系统中创建运行 mysql8.0 的 docker 容器中进行测试&#xff08;win10特定版本或win11才能安装 docker&#xff09;&#xff0c;为了方便还需要在 windows 系统中通过 SQLyog …

什么是室内外一体化定位

室内外一体化定位是一种技术&#xff0c;它允许在室内外环境中对设备或人员进行连续、无缝的定位跟踪。这种技术结合了多种定位技术的优势&#xff0c;以克服单一技术在室内外环境中可能遇到的局限性。 室内外一体化定位通常涉及以下几种技术&#xff1a; 1. 卫星定位系统&am…

【iOS】UI学习(二)

UI学习&#xff08;二&#xff09; 进度条和滑动条步进器与分栏控件警告对话框和提示等待器UITextFieldUITextField控件UITextFieldDelegate协议 UIScrollView布局子视图手动布局子视图自动布局子视图 进度条和滑动条 下面通过一个程序来讲解该内容&#xff1a; #import <…

Golang | Leetcode Golang题解之第131题分割回文串

题目&#xff1a; 题解&#xff1a; func partition(s string) (ans [][]string) {n : len(s)f : make([][]int8, n)for i : range f {f[i] make([]int8, n)}// 0 表示尚未搜索&#xff0c;1 表示是回文串&#xff0c;-1 表示不是回文串var isPalindrome func(i, j int) int8…

今日份动态规划学习(二维01背包+01背包变形)

目录 P1877 [HAOI2012] 音量调节 P1877 [HAOI2012] 音量调节 题解&#xff1a;一个入门级别的01背包问题&#xff0c;首先就是为什么能看出是01背包&#xff0c;因为只有两种状态&#xff0c;要不增大音量&#xff0c;要不减小音量&#xff0c;和01背包的选与不选非常近似。但…

[Linux系统编程]文件重定向dup和dup2

一.dup和dup2 实现重定向 1.文件描述符表 操作系统在管理文件时&#xff0c;会管理一张文件描述符表&#xff0c;根据打开的文件&#xff0c;分配一个文件描述符(int)&#xff0c;根据该文件描述符&#xff0c;锁定指向该文件的指针&#xff0c;从而索取文件。 2.重定向 在li…