Java笔记(11)——Collection集合

2023-05-16

0. 先创建一个Person类为例

public class Person {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o)
            return true;
        if (!(o instanceof Person))
            return false;

        Person person = (Person) o;

        if (getAge() != person.getAge())
            return false;
        return getName() != null ? getName().equals(person.getName()) : person.getName() == null;
    }

    @Override
    public int hashCode() {
        int result = getName() != null ? getName().hashCode() : 0;
        result = 31 * result + getAge();
        return result;
    }
}

1. add():添加一个元素到集合中

public void testAdd(){
    Collection<Object> collection = new ArrayList<>();
    System.out.println(collection.size()); // 0
    collection.add("AAA");
    collection.add(new Person("Tom", 12));
    collection.add(new Person("Jerry", 13));
    collection.add(new Person("Lucy", 14));
    System.out.println(collection.size()); // 4
}

2. addAll(Collection coll):添加一组元素到集合中

public void testAddAll(){
    Collection<Object> collection2 = new ArrayList<>();
    collection2.add("Citicbank");
    Collection<Object> collection = new ArrayList<>();

    collection.add("AAA");
    collection.add(new Person("Tom", 12));
    collection.add(new Person("Jerry", 13));
    collection.add(new Person("Lucy", 14));

    collection2.addAll(collection);
    System.out.println("collection2.size() = " + collection2.size());
    for(Object c : collection2){
        System.out.println(c);
    }
}
/*
collection2.size() = 5
Citicbank
AAA
Person{name='Tom', age=12}
Person{name='Jerry', age=13}
Person{name='Lucy', age=14}
*/

3. Iterator迭代器

/*
 * 在Collection 中无法获取指定元素 但可以遍历所有的元素
 * 1. 使用增强的for循环
 * 2. 使用Iterator迭代器
 * 2.1 获取迭代器对象:调用Collection中的iterator()方法,获取Iterator接口的对象
 * 2.2 调用Iterator 接口的方法进行迭代
 */
public void testIterator(){
    Collection<Object> collection = new ArrayList<>();
    collection.add("AAA");
    collection.add(new Person("Tom", 12));
    collection.add(new Person("Jerry", 13));
    collection.add(new Person("Lucy", 14));
    for(Object obj : collection){
        System.out.println(obj);
    }
    System.out.println();
    Iterator it = collection.iterator();
    while(it.hasNext()){
        Object obj = it.next();
        System.out.println(obj);
    }
    // 若下一个记录无效 还调用next()方法,则抛出NoSuchElementException异常
}
/*
AAA
Person{name='Tom', age=12}
Person{name='Jerry', age=13}
Person{name='Lucy', age=14}

AAA
Person{name='Tom', age=12}
Person{name='Jerry', age=13}
Person{name='Lucy', age=14}
*/

4. 移除元素的方法

/*
* 1. clear():清空集合
* 2. remove():移除指定的元素 通过equals()方法在集合中查找指定的元素
* 若存在 则移除
*
* 3. removeAll(Collection coll) : 移除coll中有的元素
* 4. retainAll(Collection coll) : 保存coll中有的元素
*/
public void testRemove(){
    Collection<Object> collection = new ArrayList<>(
    collection.add("AAA");
    Person p = new Person("Tom", 12);
    collection.add(p);
    collection.add(new Person("Jerry", 13));
    collection.add(new Person("Lucy", 14));
    Collection<Object> collection1 = new ArrayList<>
    collection1.add("DEF");
    collection1.add(new Person("Mike", 13));
    collection1.add(new Person("Jerry", 13));
    /*
    A.retainAll(B),A调用这个方法之后,
    集合A中只剩下存在于B中的元素,
    返回值为false表示集合A没改变,
    返回true集合A发生改变
    */
    System.out.println("返回值为:" + collection.retainAl
    // 上述代码返回true说明 collection 中的元素值发生改变。
    System.out.println("collection = " + collection)
    collection.remove(p);
    collection.remove(new Person("Lucy", 14));
    System.out.println(collection.size()); // 1
    collection.clear();
    System.out.println(collection.size()); //  0
}
/*
返回值为:true
collection = [Person{name='Jerry', age=13}]
1
0
*/

5. 工具方法

public void testToolMethod(){
    Collection<Object> collection = new ArrayList<>();

    collection.add("AAA");
    Person p = new Person("Tom", 12);
    collection.add(p);
    collection.add(new Person("Jerry", 13));
    collection.add(new Person("Lucy", 14));

    // 1. contain(Object o):  利用equals()方法比较,查看集合中有没有指定的元素
    // 重写equals方法
    boolean flag = collection.contains(new Person("Jerry", 13));
    System.out.println(flag); // true

    // 2. containsAll(Colllection<?> c): 查看集合中有没有指定元素的集合
    Collection<Object> collection2 = new ArrayList<>();
    collection2.add("ABCD");
    collection2.add(new Person("Mike", 15));

    System.out.println(collection.containsAll(collection2)); // false

    // 3. isEmpty() : 检验集合是否为空集合
    System.out.println(collection.isEmpty()); // false

    // 4. toArray(): 把集合转为 Object 对象的数组
    Object[] objs = collection.toArray();
    System.out.println(objs.length); // 4
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java笔记(11)——Collection集合 的相关文章

  • JSF2.0 中的空白输入字段未设置为 NULL

    我有一个支持 bean 其中 fileld 为 Long Double Integer String 当我没有在输入字段中指定任何内容时 长整型 整数和双精度值将被视为零 而不是空 我正在使用 tomcat 来部署我的应用程序 有什么解决办
  • 仅运行相应源代码已更改的单元测试?

    我正在 Jenkins CI 服务器中运行单元测试和 Selenium 测试 众所周知 在大型项目中测试需要很长时间才能运行 Java 是否有一个工具 框架只能触发其源代码已更改的测试 这是因为并非每次对 SCM 的提交都会影响源代码的所有
  • Java 比 Xmx 参数消耗更多内存

    我有一个非常简单的 Web 服务器类 基于 Java SEHttpServer class 当我使用此命令启动编译的类来限制内存使用时 java Xmx5m Xss5m Xrs Xint Xbatch Test 现在如果我使用检查内存top
  • 将 java 方法参数设置为最终参数

    那有什么区别final在下面的代码之间进行 将参数声明为有什么好处final public String changeTimezone Timestamp stamp Timezone fTz Timezone toTz return pu
  • bean 的 CDI @TransactionAttribute

    我正在尝试CDI在测试应用程序上 我有一个DAO它注入一个托管的容器JTA像这样的持久化上下文 public class TestDAO implements Serializable PersistenceContext private
  • Java:Swing:设置JButton的位置

    我想实现以下布局 OK
  • Jboss EAP 7 - 如何从部署中排除隐式模块(javax.jms)?

    我没想到我会来到这里 但经过大量 Google 和 StackOverflow 搜索后 我来到了这里 这就是我的确切问题 https www linkedin com pulse tale two jars marco antonio al
  • TableModel setCellEditable 并自动将值设置回 false

    我目前正在尝试在 JTable 中实现 JPopupMenu 它允许解锁单元格以进行编辑 Override public void actionPerformed ActionEvent e if e getActionCommand Un
  • Android Fabric Crashlytics 崩溃,初始化时未找到资源

    我从 google play 控制台收到了这份报告 看起来 Fabric 在启动时崩溃了 因为某些用户出现了资源未找到的异常 java lang RuntimeException at android app ActivityThread
  • 基于磁盘的 HashMap [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Java 是否有 或者是否有可用的库 允许我拥有基于磁盘的 HashMap 它不需要是原子的或任何东西
  • java内存不足然后退出

    我有一个必须分析大文件的软件 限制输入或提供无限内存都不是一个选择 所以我必须忍受飞行的 OOME 因为 OOME 只杀死线程 所以我的软件运行在一些糟糕的状态 从外面看一切都很好 因为进程正在运行 但在内部却是脑死亡 我想拔掉它的插头 但
  • Java中如何将Object[]转换为String[]?

    我有一个关于 Java 的问题 我有一个Object Java默认的 不是用户定义的 我想将它转换为String 谁能帮我 谢谢 这是转换 for int i 0 i lt objectArr length i try strArr i o
  • Java 日期和 MySQL 时间戳时区

    我正在编辑一段代码 其基本功能是 timestamp new Date 然后坚持下去timestamp中的变量TIMESTAMPMySQL 表列 然而 通过调试我看到Date显示在正确时区的对象 GMT 1 当持久化在数据库上时 它是GMT
  • Java泛型类型参数中的问号是什么意思? [复制]

    这个问题在这里已经有答案了 这是取自斯坦福解析器附带的一些示例的一小段代码 我已经用 Java 进行了大约 4 年的开发 但从未对这种风格的代码应该表示什么有非常深入的理解 List
  • 如何预先填充 JFileChooser 将“文件名”?

    我打算用数据库中的名称填充 JFileChooser 但使用标准 JFileChooser 对话框进行加载 删除 保存和另存为 我想给用户留下这样的印象 他们正在处理文件系统 而在后端使用数据库来保存更改 用户不应该能够浏览到不同的目录进行
  • 使用替换但不使用根元素的 Jaxb 继承

    我正在浏览布莱斯的博客http blog bdoughan com 2010 11 jaxb and inheritance using substitution html http blog bdoughan com 2010 11 ja
  • 如何使用 iBatis (myBatis) 的注释进行 IN 查询?

    我们只想在 MyBatis 中使用注释 我们确实在努力避免使用 xml 我们尝试使用 IN 子句 Select SELECT FROM blog WHERE id IN ids List
  • SWT StyledText 有高度限制吗?

    我正在尝试创建一个应用程序 其中包含在 ScrolledComposite 中显示的 StyledText 框 我在 StyledText 框中显示大量行时遇到困难 超过 2 550 行似乎会导致问题 StyledText 框本身不能有滚动
  • 如何将元素添加到通用集合

    我想知道如何将专用对象添加到通用集合中 我正在使用以下代码 Collection
  • Spring - 使用存储过程时使用 simplejdbccall 进行批量更新

    我正在使用 spring jdbc 模板 使用存储过程创建记录 public Long create City obj SimpleJdbcCall jdbcCall new SimpleJdbcCall getJdbcTemplate g

随机推荐

  • ShardingSphere-JDBC水平分片

    项目中可以使用ShardingSphere JDBC将数据存到不同库的表中 一 准备服务器 服务器规划 xff1a 使用docker方式创建如下容器 主服务器 xff1a 容器名server order0 xff0c 端口3310从服务器
  • ShardingSphere-JDBC绑定表

    一 什么是绑定表 指分片规则一致的一组分片表 使用绑定表进行多表关联查询时 xff0c 必须使用分片键进行关联 xff0c 否则会出现笛卡尔积关联或跨库关联 xff0c 从而影响查询效率 例如 xff1a t order 表和 t orde
  • ShardingSphere-JDBC广播表

    一 什么是广播表 指所有的分片数据源中都存在的表 xff0c 表结构及其数据在每个数据库中均完全一致 适用于数据量不大且需要与海量数据的表进行关联查询的场景 xff0c 例如 xff1a 字典表 广播具有以下特性 xff1a xff08 1
  • 01_JUC概述

    1 JUC是什么 xff1f 在 Java 5 0 提供了 java util concurrent 简称JUC 包 xff0c 在此包中增加了在并发编程中很常用的工具类 此包包括了几个小的 已标准化的可扩展框架 xff0c 并提供一些功能
  • 02_Lock锁

    首先看一下JUC的重磅武器 锁 xff08 Lock xff09 相比同步锁 xff0c JUC包中的Lock锁的功能更加强大 xff0c 它提供了各种各样的锁 xff08 公平锁 xff0c 非公平锁 xff0c 共享锁 xff0c 独占
  • 03_线程间通信

    面试题 xff1a 两个线程打印 两个线程 xff0c 一个线程打印1 52 xff0c 另一个打印字母A Z打印顺序为12A34B 5152Z xff0c 要求用线程间通信 public class Demo01 public stati
  • 04_并发容器类

    1 重现线程不安全 xff1a List 首先以List作为演示对象 xff0c 创建多个线程对List接口的常用实现类ArrayList进行add操作 public class NotSafeDemo public static void
  • Java笔记(10)——异常处理

    1 Java异常 Java运行时发生异常可以分为两类 xff1a Error xff1a JVM系统内部错误 资源耗尽等问题产生的异常 Exception xff1a 编程错误或偶然的外在因素导致的 2 常见的异常 2 1 RuntimeE
  • mariadb 数据库连接使用

    今天测试了使用mariadb的使用 xff0c 我使用的springboot 43 mariadb 来操作数据库 xff0c 和以前的代码基本一样 xff0c 就数据变成了mariadb xff0c 驱动还是使用mysql的 pom 文件如
  • 05_JUC强大的辅助类

    JUC的多线程辅助类非常多 xff0c 这里我们介绍三个 xff1a CountDownLatch xff08 倒计数器 xff09 CyclicBarrier xff08 循环栅栏 xff09 Semaphore xff08 信号量 xf
  • 06_Callable接口

    Thread 类 Runnable 接口使得多线程编程简单直接 但Thread类和Runnable接口都不允许声明检查型异常 xff0c 也不能定义返回值 没有返回值这点稍微有点麻烦 不能声明抛出检查型异常则更麻烦一些 public voi
  • 07_阻塞队列(BlockingQueue)

    目录 1 什么是BlockingQueue 2 认识BlockingQueue 3 代码演示 栈与队列概念 栈 Stack xff1a 先进后出 xff0c 后进先出 队列 xff1a 先进先出 1 什么是BlockingQueue 在多线
  • 08_ThreadPool线程池

    1 架构说明 Java中的线程池是通过Executor框架实现的 xff0c 该框架中用到了Executor xff0c ExecutorService xff0c ThreadPoolExecutor这几个类 Executor接口是顶层接
  • Docker 安装 elasticsearch、kibana、ik

    一 安装elasticsearch 1 拉取 elasticsearch 镜像 docker pull elasticsearch 7 6 2 2 创建 elasticsearch 容器 docker run name elasticsea
  • ElasticSearch 中 FieldType 详解

    date float long都是不能够被拆分的 64 Field type 61 FieldType Text analyzer 61 34 ik max word 34 表示该字段是一个文本 xff0c 并作最大程度拆分 xff0c 默
  • SpringBoot 使用 ElasticSearch 编程测试

    1 在 pom xml 准备依赖 lt dependency gt lt groupId gt org projectlombok lt groupId gt lt artifactId gt lombok lt artifactId gt
  • el-table-column中formatter格式化字典

    el table column中formatter格式化字典 vue 中使用 lt el table column gt 中的 formatter 格式化内容 x1f52e lt template gt lt 列表 gt lt el tab
  • cookie和session详解

    源自 xff1a https www cnblogs com l199616j p 11195667 html xff0c 有删减 另 xff0c cookie session与token的真正区别 xff1a https blog csd
  • 如何理解端到端

    1 非端到端 xff1a 典型的自然语言处理 xff08 Natural Language Processing xff09 过程 xff1a 分词 gt 词性标注 gt 句法分析 gt 语义分析 直至得出结果 多个独立步骤 xff0c 每
  • Java笔记(11)——Collection集合

    0 先创建一个Person类为例 span class token keyword public span span class token keyword class span span class token class name Pe