欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Java类集框架-Collection

时间:2023-08-04

数组与集合的区别

集合类体系结构

Collection 集合(单列)

概述

使用方式

Collection集合常用方法

代码实现

Collection的遍历

迭代器

增强for循环

下回分解


数组与集合的区别

相同点

都是容器,可以存储多个数据

不同点

数组的长度是不可变的,集合的长度是可变的

数组可以存基本数据类型和引用数据类型

集合只能存引用数据类型,如果需要存基本数据类型,需要存对应的包装类(int -> Integer)

集合类体系结构

其中蓝色的表示接口,红色的表示实现类。

Collection 集合(单列)

概述

是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素

JDK 不提供此接口的任何直接实现。它提供更具体的子接口(如Set和List)实现

使用方式

创建Collection集合的对象

多态的方式

具体的实现类ArrayList

Collection集合常用方法 方法名说明boolean add(E e)添加元素boolean remove(Object o)从集合中移除指定的元素boolean removeIf(Object o)根据条件进行移除void clear()清空集合中的元素boolean contains(Object o)判断集合中是否存在指定的元素boolean isEmpty()判断集合是否为空int size()集合的长度,也就是集合中元素的个数

注意: 

removeif底层会遍历集合,得到集合中的每一个元素。将每一个元素代入lambda表达式中判断一下,如果返回true,就删除;如果返回false,就保留。

代码实现

public class Demo01 { public static void main(String[] args) { Collection collection = new ArrayList<>(); // boolean add(E e)添加元素 collection.add("aaa"); collection.add("bbb"); collection.add("ccc"); collection.add("dddd"); System.out.println(collection); //[aaa, bbb, ccc] // boolean remove(Object o)从集合中移除指定的元素 boolean result1 = collection.remove("aaa"); boolean result2 = collection.remove("ddd"); System.out.println(collection); //[bbb, ccc] System.out.println(result1 + "," + result2); //true,false // boolean removeIf(Object o)根据条件进行移除 collection.removeIf( (String s) -> { return s.length() == 3; } ); System.out.println(collection); //[dddd] // boolean contains(Object o)判断集合中是否存在指定的元素 System.out.println(collection.contains("dddd")); //true System.out.println(collection.contains("ddd")); //false // boolean isEmpty()判断集合是否为空 System.out.println(collection.isEmpty()); //false // int size()集合的长度,也就是集合中元素的个数 System.out.println(collection.size()); // 1 // void clear()清空集合中的元素 collection.clear(); System.out.println(collection); //[] }}

Collection的遍历

迭代器

集合的专用遍历方式

Iterator iterator()    返回此集合中元素的迭代器,通过集合对象的iterator()方法得到

Iterator中的常用方法

boolean hasNext()        判断当前位置是否有元素可以被取出 ​

E next()        获取当前位置的元素,将迭代器对象移向下一个索引位置

代码实现 

public class Demo02 { public static void main(String[] args) { //创建集合对象 Collection collection = new ArrayList<>(); //添加元素 collection.add("a"); collection.add("b"); collection.add("c"); collection.add("d"); collection.add("e"); //Iterator iterator():返回此集合中元素的迭代器,通过集合的iterator()方法得到 Iterator it = collection.iterator(); //用while循环改进元素的判断和获取 while (it.hasNext()) { String s = it.next(); System.out.println(s); //a b c d e } }}

迭代器中删除的方法

void remove(): 删除迭代器对象当前指向的元素

public class Demo02 { public static void main(String[] args) { ArrayList list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("e"); Iterator it = list.iterator(); while(it.hasNext()){ String s = it.next(); if("b".equals(s)){ //指向谁,那么此时就删除谁. it.remove(); } } System.out.println(list); //a c d e }}

增强for循环

它是JDK5之后出现的,其内部原理是一个Iterator迭代器

实现Iterable接口的类才可以使用迭代器和增强for

简化数组和Collection集合的遍历

单列集合可以使用迭代器与增强for,但是双列集合不能直接使用,因为它的底层没有实现Iterator接口。

代码实现

public class Demo1 { public static void main(String[] args) { ArrayList list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("e"); list.add("f"); //1,数据类型一定是集合或者数组中元素的类型 //2,str仅仅是一个变量名而已,在循环的过程中,依次表示集合或者数组中的每一个元素 //3,list就是要遍历的集合或者数组 for(String str : list){ System.out.println(str); } }}

注意 :

如果在for中这样子写

for(String str : list){

        str = "q";

        System.out.println(str);

        // q ...
}

对于集合中的元素是没有影响的!请看下图:

 

下回分解

Java类集框架-Listhttps://blog.csdn.net/weixin_43715214/article/details/122780664

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。