Java集合类学习--Collection

做小程序支付时,我是怎么被“虚拟支付”绊了一跤的 微信小程序支付开发中,普通支付与虚拟支付存在本质差异。开发者常误将虚拟权益(会员、点数等)当作普通商品支付,导致审核失败。两者在审核关注点、结算方式、API调用及平台政策上都截然不同。关键点在于:1)先明确交易对象类型;2)产品命名需真实反映权益性质;3)支付成功≠业务完成;4)审核说明要详细描述交付逻辑;5)避免依赖过时规则。正确顺序应是:判断商品属性→选择支付类型→设计订单系统→准备审核材料。这个认知差异比技术实现更重要,提前理解平台规则可大幅减少返工。 阅读详情

Collection

Java 集合框架(Java Collections Framework, JCF)包含很多平时开发中的常用类,例如 List、Set、ArrayList、HashMap、HashSet 等,因此打算先从这里下手。
在这里插入图片描述

而 Collection 接口又是集合层次中的根接口,最常用的 List 和 Set 接口都继承自它。它们的继承结构如下(常用部分):

在这里插入图片描述
Collection 接口有很多方法,如下:
在这里插入图片描述
简单分析:

size(): 集合中包含的元素个数;
isEmpty(): 集合是否为空;
contains(Object): 集合中是否包含某个对象;
iterator(): 返回该集合的迭代器,用于(顺序)遍历该集合;
Object[] toArray(): 将集合中的元素“拷贝”到一个 Object 数组中;
T[] toArray(T[] a): 作用同 5.1,区别在于该方法可以指定数组的类型(这两个方法用于集合与数组之间的转换);
add(E): 添加元素;
remove(Object): 移除元素;
containsAll(Collection<?>): 判断该集合是否包含另一个集合;
addAll(Collection<? extends E>): 将另一个集合的所有元素都添加到该集合中;
removeAll(Collection<?>): 从该集合中移除指定集合的所有元素;
removeIf(Predicate<? super E>): 从该集合中移除满足指定条件的元素,其中 Predicate 是 JDK 1.8 引入的函数式操作,即传入的参数是一个方法;
retainAll(Collection<?>): 保留指定集合中的元素,即移除所有未包含在指定集合中的元素;
clear(): 清空集合;
equals(Object): 比较该集合与指定的对象是否相等;
hashCode(): 返回该集合的哈希值,注意重写 equals 方法时必须要重写该方法,以满足 Object.hashCode 方法的规定。
spliterator(): 可分割迭代器,用于并行遍历集合中的元素(iterator() 方法是顺序遍历);
stream() & parallelStream(): JDK 1.8 引入的流(Stream)式数据处理,分别表示串行流和并行流,该部分以后单独分析。

源码分析

public interface Collection<E> extends Iterable<E> {

     //返回此集合中的元素数。 
     //如果此收藏包含超过Integer.MAX_VALUE个元素,则返回Integer.MAX_VALUE 。
    int size();

   
     //如果此集合不包含元素,则返回 true 。
    boolean isEmpty();

   
     //如果此集合包含指定的元素,则返回true 。
     //返回true如果且仅当该集合至少包含一个元素e使得(o==null ? e==null : o.equals(e)) 。 
     //ClassCastException - 如果指定元素的类型与此集合不兼容( optional ) 
     //NullPointerException - 如果指定的元素为空,并且此集合不允许空元素( optional ) 
    boolean contains(Object o);

   
     //返回此集合中的元素的迭代器。
     //没有关于元素返回顺序的保证(除非这个集合是提供保证的某个类的实例)。 
    Iterator<E> iterator();

    //返回一个包含此集合中所有元素的数组。 如果此集合对其迭代器返回的元素的顺序做出任何保证,则此方法必须以相同的顺序返回元素。 
	//返回的数组将是“安全的”,因为该集合不保留对它的引用。 (换句话说,这个方法必须分配一个新的数组,即使这个集合是由数组支持的)。 
	//因此,调用者可以自由地修改返回的数组。 
	//此方法充当基于阵列和基于集合的API之间的桥梁。
    Object[] toArray();


    //返回包含此集合中所有元素的数组; 返回的数组的运行时类型是指定数组的运行时类型。 如果集合适合指定的数组,则返回其中。 
    //否则,将为指定数组的运行时类型和此集合的大小分配一个新数组。 
    //T - 包含集合的数组的运行时类型 
    //a - 要存储此集合的元素的数组,如果它足够大; 否则,为此目的分配相同运行时类型的新数组。 
    //可能出现异常:
    //ArrayStoreException - 如果指定数组的运行时类型不是此集合中每个元素的运行时类型的超类型 
	//NullPointerException - 如果指定的数组为空 
    <T> T[] toArray(T[] a);

	//保此集合包含指定的元素(可选操作)。 如果此集合由于调用而更改,则返回true 。 (如果此集合不允许重复,并且已包含指定的元素,则返回false。 ) 
	//支持此操作的集合可能会限制可能添加到此集合的元素。 特别是一些集合拒绝添加null种元素,和其他人将强加可添加元素的类型限制。 收集类应在其文档中明确说明可能添加哪些元素的限制。 
	//如果一个集合拒绝添加一个特定的元素,除了它已经包含该元素之外,它必须抛出异常(而不是返回false )。 这保留了一个集合在此调用返回后始终包含指定元素的不变量。 
	// e - 要确保在此集合中的存在的元素 
	//会出现的异常:
	//UnsupportedOperationException - 如果此 集合不支持add操作 
	//ClassCastException - 如果指定元素的类阻止将其添加到此集合 
	//NullPointerException - 如果指定的元素为空,并且该集合不允许空元素 
	//IllegalArgumentException - 如果元素的某些属性阻止其添加到此集合 
	//IllegalStateException - 如果由于插入限制,此时无法添加该元素 
    boolean add(E e);

    //从该集合中删除指定元素的单个实例(如果存在)(可选操作)。 更正式地,删除元素e ,使得(o==null ? e==null : o.equals(e)) ,如果该集合包含一个或多个这样的元素。 如果此集合包含指定的元素(或等效地,如果此集合由于调用而更改),则返回true 。 
	//o - 要从此集合中删除的元素(如果存在)
	//可能会出现的异常:
	//ClassCastException - 如果指定元素的类型与此集合不兼容( optional ) 
	//NullPointerException - 如果指定的元素为空,并且此集合不允许空元素( optional ) 
	//UnsupportedOperationException - 如果此 集合不支持remove操作 
    boolean remove(Object o);


    //如果此集合包含指定 集合中的所有元素,则返回true。 
    boolean containsAll(Collection<?> c);

  	//c - 包含要添加到此集合的元素的集合
  	//将指定集合中的所有元素添加到此集合
    boolean addAll(Collection<? extends E> c);

    //删除指定集合中包含的所有此集合的元素
    boolean removeAll(Collection<?> c);

    //java8新增,所以有default 
    //filter - 对要删除的元素返回 true
    //默认实现使用其iterator()遍历集合的所有元素。 使用Iterator.remove()删除每个匹配元素。
    //如果集合的迭代器不支持删除,那么UnsupportedOperationException将被抛出第一个匹配元素。
    default boolean removeIf(Predicate<? super E> filter) {
        Objects.requireNonNull(filter);
        boolean removed = false;
        final Iterator<E> each = iterator();
        while (each.hasNext()) {
            if (filter.test(each.next())) {
                each.remove();
                removed = true;
            }
        }
        return removed;
    }

    //c - 包含要保留在此集合中的元素的集合
    //仅保留此集合中包含在指定集合中的元素(可选操作)。 换句话说,从该集合中删除所有不包含在指定集合中的元素。 
    boolean retainAll(Collection<?> c);

    //从此集合中删除所有元素
    void clear();


    //重写Object
    boolean equals(Object o);
    int hashCode();

    //下面内容均为1.8新增,后续学习补充
    @Override
    default Spliterator<E> spliterator() {
        return Spliterators.spliterator(this, 0);
    }

    default Stream<E> stream() {
        return StreamSupport.stream(spliterator(), false);
    }

    default Stream<E> parallelStream() {
        return StreamSupport.stream(spliterator(), true);
    }
}

简单示例

@Test
public void test_size(){
    Collection<String> collection = new ArrayList<>();
    collection.add("a");
    collection.add("b");
    collection.add("c");
    collection.add("d");
    int size = collection.size();
    System.out.println("集合中元素的个数:" + size);
}
4
@Test
public void test_isEmpty(){
    Collection<String> collection = new ArrayList<>();
    collection.add("a");
    collection.add("b");
    collection.add("c");
    boolean isEmpty = collection.isEmpty();
    System.out.println("集合是否为空:" + isEmpty);
}
集合是否为空:false
@Test
public void test_isEmpty(){
    Collection<String> collection = new ArrayList<>();
    collection.add("a");
    collection.add("b");
    collection.add("c");
    boolean isContains = collection.contains("a");
    System.out.println("集合是否包含元素a:" + isContains);
}
集合是否包含元素a:true
@Test
public void test_iterator() {
    Collection<String> collection = new ArrayList<>();
    collection.add("a");
    collection.add("b");
    collection.add("c");
 
    Iterator<String> iterator = collection.iterator();
    while (iterator.hasNext()) {
        String next = iterator.next();
        System.out.println("迭代器遍历出来的集合元素:" + next);
    }
}
迭代器遍历出来的集合元素:a
迭代器遍历出来的集合元素:b
迭代器遍历出来的集合元素:c
GeoScene Pro教程(002):GeoScenePro基础操作 GeoScenePro基础操作介绍。 阅读详情

相关推荐

告别代码恐惧!用KRobot图形化编程,10分钟搞定Arduino巡线小车(附完整接线图)

本文介绍如何使用KRobot图形化编程工具快速搭建Arduino巡线小车,无需编写代码。从硬件准备到逻辑构建,详细讲解传感器数据处理、电机控制优化及高级功能扩展,帮助教育工作者和创客爱好者10分钟内完成项目。

weixin_30632089的博客 394

Collection

collection collection中的7种方法 1.boolean add(E e) 确保此集合包含指定的元素(可选操作)。 如果此集合由于调用而更改,则返回true 。 (如果此集合不允许重复,并且已包含指定的元素,则返回false。 ) 支持此操作的集合可能会限制可能添加到此集合的元素。 特别是一些集合拒绝添加null种元素,和其他人将强加可添加元素的类型限制。 收集类应在其文档中明确...

tangshuai96的博客 393

Python介绍与安装

Python介绍与安装

acegi13579的专栏 3219

【JAVA进阶】java中的集合(上)- Collection及其子类介绍

文章主要介绍java中的集合概述,以及Collection接口下List,Set,Queue及其实现子类的详细解释

weixin_45551345的博客 2777

Simpack实战:5分钟搞定轨道车辆车轮不圆的3种定义方法(附详细参数设置)

本文详细介绍了在Simpack中定义轨道车辆车轮不圆的3种高效方法:Radius deviations、Fourier coefficients和Harmonic function,并提供了详细的参数设置指南。通过实战案例和参数优化技巧,帮助工程师快速掌握车轮不圆度的定义与仿真,提升轨道车辆动力学分析的准确性和效率。

weixin_29292535的博客 201

高级数据库--作业及答案

中科大金培权老师的高级数据库课程作业及答案

一杯水果茶!足矣~ 1655

判断Collection是否为空的方法

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34190136的博客 4981

深度学习实战12(进阶版)-利用Dewarp实现文本扭曲矫正

大家好,我是微学A1, 我们在生活中会看到一些拍摄扭曲的图片,我们在通过OCR识别的时候,因为扭曲的厉害,而无法识别,我们需要对图片进行处理。

微学AI的博客 3156

Java集合(一):泛型与Collection集合

Java集合(一):泛型与Collection集合

席木木的博客 1359

R语言dplyr包recode函数、recode_factor函数数值或因子替换实战

R语言dplyr包recode函数、recode_factor函数数值或因子替换实战 目录 R语言dplyr包recode函数、recode_factor函数数值或因子替换实战 #导入dplyr包 #recode函数进行数值替换 #recode_factor函数对因子变量进行替换 #导入dplyr包 install.packages("dplyr") # Install & load dplyr library("dpl.

data+scenario+science+insight 1589

AUTOSAR&UDS 理论要点及isolar实战-DEM模块

从这节开始,将讲解UDS诊断中非常重要的知识点:故障事件触发、故障信息上报、故障信息处理、故障信息存储和故障系统降级,后续会陆续更新。

cqaa11的博客 552

【java集合_collection的判断功能】

collection的判断功能 boolean isEmpty():判断集合是否为空 1.0创建两个collection集合,一个添加元素,一个不添加元素。 1.1判断两个集合是否为空,如果为空会返回什么,不为空又会返回什么。 从图中我们可以看到集合一中有元素,所以返回值为false;集合二中没有任何元素,所以返回值为true。 boolean contains(Object o):判断集合中是否包含指定的元素 2.0 我们创建一个集合并给它添加一些元素。 2.1判断是否包含某些元素,这里我给

putiyuzhai的博客 1446

AI上推荐 之 AutoInt模型(Transformer开始玩特征交互)

1. 写在前面 这段时间做优化模型的事情,正好和特征交互有关系,这个也是推荐系统里面一直探索的一个方向,从浅层模型的FM, FFM, HOFM, FwFM到深层模型的DNN, PNN, NFM, AFM, DeepFM, DCN, xDeepFM, FiBiNet等,而这次正好借着这次机会, 多看一些有关于特征交叉方向的模型paper, 把一些新的模型或者较为前沿的思想融入进来。 上一篇的FiBinet模型就是在特征交互上一个非常有意思的探索, 通过SENET动态选择有用的交互特征, 然后再用一个双线性交互

Miracle8070 5724

学习-Java集合类之Collection接口之往集合中添加元素

Java 中的集合分为两大家族,一个是 Collection 家族,一个是 Map 家族,其中 Collection 家族有三大成员:List、Queue 和 Set,这三大成员有四个常用子类(如下图 3 所示):ArrayList、LinkedList、HashSet、SortedSet。,但是咱们在 JAVA 入门的时候学过数组,数组也是一个能存储大量数据的容器,好像也可以满足日常开发的需求,那我们为什么要使用集合呢?例如:购物车是商品的集合,军队是军人的集合。数组的长度固定,集合的长度可变;

千浔的博客 1310

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

java学习之集合类 Collection接口

Collection 接口是 List 接口和 Set 接口的父接口,通常情况下不被直接使用。Collection 接口定义了一些通用的方法,通过这些方法可以实现对集合的基本操作。因为 List 接口和 Set 接口继承自 Collection 接口,所以也可以调用这些方法。本节将介绍 Collection 接口中常用的方法,如表 1 所示。 表1 Collection接口的常用方法 ...

weixin_30826761的博客 365

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java集合类之Collection接口学习

今天看到Collection集合类这个词,发现脑海里没有太多的记忆,于是重新复习了Collection接口。迟点再总结下Map接口。 下面是自己在MyEclispe中敲的代码,只有实践才可以提高记忆。 1 /** 2 * 3 --Collection接口是Set接口和List接口的父接口,通常情况下不被直接使用,但定义了一些通用方法,通过这些方法可以实现对集合的基本操作。 ...

weixin_34416754的博客 290

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

java collection类_Java 学习之集合类(Collections)

Collection(集合类)我们是使用数组来保存数据,但是他的长度一旦创建,就已经确定了,当我们要动态传入穿值,数组就有些局限了,集合类就孕育而生;所谓集合,就是来保存,盛装数据,也可称为容器类;使用的类 在java.util 包里集合类的分类一、Collection(一组对立的元素)List(有顺序)Set(不能有重复元素)Queue(保存队列先进先出的顺序)二、Map(键值对(key-val...

weixin_29693211的博客 318

java集合类库学习记录———Collection类库的结构

先来一张Collection类的“全家福”,方便大家理解类与类之间的关系: (集合类库UML图来自于http://blog.youkuaiyun.com/vking_wang/article/details/16965853) 从图上可以看出来,集合大概可以分成2部分,一部分用Collection作为跟接口,另一部分用Map作为根接口。 我们先了解下Collection接口,Collecti

qwelkjzxc369的博客 528

Java之Collection(集合类)的学习

Collection:  Collection是 层次结构中的根接口。  注释:JDK 不提供此接口的任何直接 实现:它提供更具体的子接口,更具体的实现类 Collection基本功能: 添加功能:  boolean add(Object e) 删除功能:  void clear() :删除集合中所有元素(暴力删除)  boolean remove(Object o):删除集合中的指定元素 ...

little_prince23的博客 285

[Java学习之路篇] Java集合类库之Collection接口

所在包:java.util 在编程的过程中,但凡遇到与数据结构相关的问题时,都离不开Collection接口与Map接口,两者是整个集合类库中最基本的根接口。而Collection接口主要负责实现一些线性结构,如线性表(顺序表)、链表、栈、队列等。 集合类库的关系图: 这里主要表现了部分与集合类库有关的接口与实现类们,其中粗体黑框是我们最为常用、尤其重要的实现类。 这张是完整的集合接口、子接口和实现类们的关系图,其中拓展了Vector、Stack、LinkedHashMap等实现或继承的子类们,关系网还

weixin_41887912的博客 382

Java学习51-常用类 集合类Collection>List子接口>ArrayList(主要实现类)

回答:因为上面coll定义的是一个new ArrayList(),而当判断“coll.contains”就需要调用这个元素p1所属 Person类的equal方法,而在Person类中用户定义的equals里面需要的行参是(Object o),这里就是coll,自然需要将coll里面的元素一个一个送进去都比对一遍,先是“AA”然后123然后才能轮到Person类的p1元素,所以调用了三次才出现的结果。|----- 子接口:Set:存储无序的,不可重复的数据(类似数学里说的集合,里面元素是乱的)

weixin_42892630的博客 1125

Educoder第1关:学习-Java集合类之Collection接口之往集合中添加元素

##educoer 第1关:学习-Java集合类之Collection接口之往集合中添加元素 任务:接收给定的一行字符串,实现如下需求: 1.通过空格(一个)切割字符串; 2.创建任意一种类型的集合; 3.将切割后的字符串元素添加进集合; 4.打印集合。 */ import java.util.ArrayList; import java.util.Scanner; public class CollTest { public static void main(String[] args)

qq_44293858的博客 6694

头歌 学习-Java集合类之Collection接口之往集合中添加元素 12-1

头歌 学习-Java集合类之Collection接口之往集合中添加元素 12-1

m0_64224735的博客 3293

JAVA集合类汇总(Collection)(学习笔记一)

学习笔记(一)一、集合与数组:       数组,固定长度、可以存储基本数据类型。是用来存储现由对象的一种容器,不适合在对象数量未知的时候使用。       集合,只能存储对象,对象类型可以不一样,长度可变。二、关系:                                                图一集合接口框架由(图一)可以看出:       Collection&lt;E&gt...

qq_21416001的博客 330

Java学习笔记-集合类(Collection)更新ing

一、集合 单列:Collection (接口 在java类库中,集合类的基本接口是Collection接口。该接口有两个基本方法 public interface Collection <E> { boolean add (E element); //add 方法用于向集合中添加元素 Iterator <E> iterator; // iterator方法用于返回一个实现了Iterator接口的对象 } 1.1 List(可重复,接口) ArrayList(实现类) 底层结构

codepandacode的博客 285

第1关:学习-Java集合类之Collection接口之往集合中添加元素

Java 中的集合分为两大家族,一个是 Collection 家族,一个是 Map 家族,其中 Collection 家族有三大成员:List、Queue 和 Set,这三大成员有四个常用子类(如下图 3 所示):ArrayList、LinkedList、HashSet、SortedSet。,但是咱们在 JAVA 入门的时候学过数组,数组也是一个能存储大量数据的容器,好像也可以满足日常开发的需求,那我们为什么要使用集合呢?例如:购物车是商品的集合,军队是军人的集合。数组的长度固定,集合的长度可变;

m0_73614626的博客 1992
上一篇: 在路上(四)
下一篇: Java集合类学习--List
CodersCoder
博客等级 码龄10年 90粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值