【JavaSE】集合(Collection类)

news2024/9/28 9:33:45

文章目录

  • 1.集合框架
    • 1.1 collection
    • 1.2 map
  • 2. collection
    • 2.1.集合迭代
    • 2.2.contains和remove
    • 2.3集合中元素的删除
  • 3.List
  • 4.ArrayList
  • 5.LinkList
  • 6.Vector
  • 7.泛型
    • 7.1泛型初步
    • 7.2自动类型推断机制
    • 7.3 自定义泛型
  • 8.增强for循环
  • 9.Set
    • 9.1HashSet
    • 9.2 TreeSet

1.集合框架

1.1 collection

在这里插入图片描述

1.2 map

在这里插入图片描述

2. collection

查文档。

2.1.集合迭代

package com.sdnu.javase.collection;

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

/**
 * @projectName: javase
 * @package: com.sdnu.javase.collection
 * @className: CollectionTest01
 * @author: Beyong
 * @description: TODO
 * @date: 2023/2/26 15:32
 * @version: 1.0
 */
public class CollectionTest01 {
    public static void main(String[] args) {
        Collection numberCollection = new ArrayList();
        numberCollection.add(12);
        numberCollection.add(24);
        numberCollection.add(67);
        Iterator  it = numberCollection.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }
}

2.2.contains和remove

contains和remove底层都调用了equals。

2.3集合中元素的删除

当集合结构发生改变时,迭代器必须重写获取。
删除元素使用:迭代器.remove()
(不要使用 集合.remove())

3.List

文档

4.ArrayList

  • 默认初始化容量为10(底层先创建一个初始化长度为0的数组,添加元素后,长度初始化为10)
  • 底层是一个Object类型的数组
  • 构造方法:new ArrayList() new ArrayList(指定容量)
  • 扩容到1.5倍
  • 检索效率高,增删效率低
  • 向数组末尾添加元素效率高

HashSet转成ArrayList:

Collection c = new  HashSet();
List myList = new ArrayList(c);

非线程安全变成线程安全:

List myList = new ArrayList();
Collections.synchronizedList(myList);

5.LinkList

随机增删效率高,检索效率低。

6.Vector

  • 初始容量为10
  • 扩容为原来的2倍
  • 线程安全的

7.泛型

7.1泛型初步

package com.sdnu.javase.collection;

import java.util.Iterator;
import java.util.List;
import java.util.ArrayList;

/**
 * @projectName: javase
 * @package: com.sdnu.javase.collection
 * @className: GenericTest01
 * @author: Beyong
 * @description: TODO
 * @date: 2023/2/27 17:21
 * @version: 1.0
 */
public class GenericTest01 {
    public static void main(String[] args) {
        List<Animal> myList = new ArrayList<Animal>();
        Cat c = new Cat();
        Bird b = new Bird();
        myList.add(c);
        myList.add(b);
        Iterator<Animal> it = myList.iterator();
        while (it.hasNext()){
            Animal obj = it.next();
        }
    }
}

class Animal {
    public void move(){
        System.out.println("动物在移动");
    }
}

class Cat extends Animal{
    public void catchMouse(){
        System.out.println("猫抓老鼠");
    }
}

class Bird extends Animal {
    public void fly(){
        System.out.println("鸟儿在飞翔");
    }
}

使用泛型指定集合中存储的类型。

不使用则Animal obj = it.next();报错。

7.2自动类型推断机制

List<Animal> myList = new ArrayList<>();

7.3 自定义泛型

package com.sdnu.javase.collection;

/**
 * @projectName: javase
 * @package: com.sdnu.javase.collection
 * @className: Test03
 * @author: Beyong
 * @description: TODO
 * @date: 2023/2/27 17:54
 * @version: 1.0
 */
public class Test03<T> {
    public void method(T obj){
        System.out.println(obj);
    }

    public static void main(String[] args) {
        Test03<String> myTest = new Test03<>();
        myTest.method("pppp");
        // 错误:myTest.method(123);
    }
}

8.增强for循环

for(元素类型 变量名:数组或者集合){
}

9.Set

9.1HashSet

特点:无序不可重复。
(无序指的是存放进去的顺序和取出来的顺序不同)

9.2 TreeSet

特点:无序不可重复,但是可以排序。
(这里无序指的是存放进去的顺序和取出来的顺序不同,可以排序指的是集合中的元素可以排序。)

在这里插入图片描述

作者:Beyong    
出处:Beyong博客
github地址 https://github.com/beyong2023

本博客中未标明转载的文章归作者Beyong有,欢迎转载,但未经作者同意必须保留此段声明,且在文章明显位置给出原文连接,否则保留追究法律责任的权利。

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

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

相关文章

4G模块DTU网关远程抄表方案(二):DL645/698协议国网电表

4G模块DTU网关远程抄表方案(二):DL645/698协议国网电表 1 DL 645协议简介 DL645协议是一种用于智能电能表的远程抄读通讯标准。制定该标准是为统一和规范多功能电能表与数据终端设备进行数据交换时的物理连接和通信链路及应用技术规范。DL645协议可用于远程监测电力传输和使用…

【2223sW1】LOG2

写在前面 好好学习&#xff0c;走出宿舍&#xff0c;走向毕设&#xff01; 一些心路历程记录&#xff0c;很少有代码出现 因为鬼知道哪条代码到时候变成毕设的一部分了咧&#xff0c;还是不要给自己的查重挖坑罢了 23.2.22 今儿收获挺多&#xff0c;所以就把上一个LOG给发了…

戴尔dell inspiron-5598电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。硬件型号驱动情况主板X99 K9 v2 Machinist处理器i5-10210U / *i7-10510U已驱动内存20GB已驱动硬盘1000GB SAMSUNG 860 QVO SATA已驱动显卡Intel UHD 620已驱动声卡Realtek ALC3204/236已驱动网卡RTL8168H Gigabit Ethernet已…

测量 R 代码运行时间的 5 种方法

简介 平常在撰写论文时&#xff0c;会需要比较算法之间的计算时间。本篇文章给出几种测量 R 代码运行时间的方法。本文是小编学习过程中的笔记&#xff0c;主要参考博客1&#xff0c;2。 1. 使用 Sys.time() 小编通常使用 Sys.time() 函数来计算时间。首先记录当前运行时刻&…

ChatGPT火到汽车圈,毫末智行、集度纷纷进场

作者 | 白日梦想家 编辑 | 于婷ChatGPT的火爆&#xff0c;已经席卷到了汽车领域。 众多相关企业宣布纷纷布局&#xff0c;车企也争相宣布将搭载类似产品。 2月初&#xff0c;百度宣布将在今年3月完成类似ChatGPT的项目“文心一言”的内部测试。据悉&#xff0c;该产品是基于百度…

Postgresql源码(101)深入分析clog组提交(clog group updates)

1 背景知识 1.1 CLOG使用的全局变量XactLastRecEnd XLogRecPtr ProcLastRecPtr InvalidXLogRecPtr; XLogRecPtr XactLastRecEnd InvalidXLogRecPtr; XLogRecPtr XactLastCommitEnd InvalidXLogRecPtr;其中ProcLastRecPtr、XactLastRecEnd更新位置XLogInsertRecord&#xf…

如何在logback.xml中自定义动态属性

原文地址&#xff1a;http://blog.jboost.cn/trick-logback-prop.html 当使用logback来记录Web应用的日志时&#xff0c;我们通过在logback.xml中配置appender来指定日志输出格式及输出文件路径&#xff0c;这在一台主机或一个文件系统上部署单个实例没有问题&#xff0c;但是…

K8S静态存储与动态存储工作流

静态存储 Kubernetes 同样将操作系统和 Docker 的 Volume 概念延续了下来&#xff0c;并且对其进一步细化。Kubernetes 将 Volume 分为持久化的 PersistentVolume 和非持久化的普通 Volume 两类。为了不与前面定义的 Volume 这个概念产生混淆&#xff0c;后面特指 Kubernetes …

Type and Value

Type and Value前言一、reflect.Type1.1 数据结构1.2 方法1.2.1 所有类型通用方法1.2.2 不同基础类型的专有方法二、reflect.Value总结参考资料前言 reflect.Type和reflect.Value是go 反射的两大基本类型&#xff0c;一个管变量的类型方面&#xff0c;一个管变量的值方面。 一…

PTA L1-058 6翻了(详解)

前言&#xff1a;内容包括&#xff1a;题目&#xff0c;代码实现&#xff0c;大致思路&#xff0c;代码解读 题目&#xff1a; “666”是一种网络用语&#xff0c;大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”&#xff0c;意思是“6翻了”&#xff0…

vue源码分析-动态组件

前面花了两节的内容介绍了组件&#xff0c;从组件的原理讲到组件的应用&#xff0c;包括异步组件和函数式组件的实现和使用场景。众所周知&#xff0c;组件是贯穿整个Vue设计理念的东西&#xff0c;并且也是指导我们开发的核心思想&#xff0c;所以接下来的几篇文章&#xff0c…

LLaMA-META发布单卡就能跑的大模型

2023年2月25日&#xff0c;Meta使用2048张A100 GPU&#xff0c;花费21天训练的Transformer大模型LLaMA开源了。 1.4T tokenstakes approximately 21 days 以下是觉得论文中重要的一些要点 1&#xff09;相对较小的模型也可以获得不错的性能 研究者发现在给定计算能力限制的情…

【YOLO系列】YOLOv4论文超详细解读1(翻译 +学习笔记)

前言 经过上一期的开篇介绍&#xff0c;我们知道YOLO之父Redmon在twitter正式宣布退出cv界&#xff0c;大家都以为YOLO系列就此终结的时候&#xff0c;天空一声巨响&#xff0c;YOLOv4闪亮登场&#xff01;v4作者是AlexeyAB大神&#xff0c;虽然换人了&#xff0c;但论文中给出…

【BN层的作用】论文阅读 | How Does Batch Normalization Help Optimization?

前言&#xff1a;15年Google提出Batch Normalization&#xff0c;成为深度学习最成功的设计之一&#xff0c;18年MIT团队将原论文中提出的BN层的作用进行了一一反驳&#xff0c;重新揭示BN层的意义 2015年Google团队论文&#xff1a;【here】 2018年MIT团队论文&#xff1a;【h…

谷粒学苑第六天

谷粒学苑第六天 https://hyy-0212.oss-cn-hangzhou.aliyuncs.com/%E5%A4%B4%E5%83%8F.jpg AccessKey看私密文件 后端&#xff1a; idea导入项目后文件颜色不对解决方法 解决&#xff1a;https://blog.csdn.net/m0_37735176/article/details/88916844 后端 私有转为公有&am…

C语言——字符串函数与内存函数

目录 前言 一. 函数介绍 1.1 strlen 1.2 strcpy 1.3 strcat 1.4 strcmp 1.5 strncpy 1.6 strncat 1.7 strncmp 1.8 strstr 1.9 strtok 1.10 strerror 1.11 字符分类函数 1.12 memcpy 1.13 memmove 1.14 memcmp 二. 函数的模拟实现 2.1 模拟实现strlen 2.2 模拟实现st…

阿里测试员晒薪资条,看完真的扎心了...

前几天&#xff0c;有位老粉私信我&#xff0c;说看到某95后学弟晒出阿里的工资单&#xff0c;他是真酸了…想狠补下技术&#xff0c;努力冲一把大厂。 为了帮到他&#xff0c;也为了大家能在最短的时间内做面试复习&#xff0c;我把软件测试面试系列都汇总在这一篇文章了。 …

Windows10 把两张图片合并成一张图片

Windows10把两张图片合并成一张图片 文章目录Windows10把两张图片合并成一张图片1. 背景2. "画图"实现多图拼接1. 背景 相比截图功能&#xff0c;在 Google 的 Chrome 浏览器上&#xff0c;整页截屏功能仍需要安装额外的插件才能完成&#xff0c;这一点 微软的 bing…

【K3s】第18篇 详解 Kubernetes 调度器工作原理

目录 1、概述 2、kube-scheduler 3、kube-scheduler 调度流程 4、支持两种方式配置调度器的过滤和打分行为 4.1 调度策略 4.2 调度策略 5、总结 1、概述 在 Kubernetes 中&#xff0c;调度 是指将Pod放置到合适的节点上&#xff0c;以便对应节点上kubelet能够运行这些 P…

ChatGPT来临,架构师何去何从?

你好&#xff0c;我是李运华。 最近科技圈大火的事件就是ChatGPT的全球火热流行。这款由OpenAI公司在2022年11月底推出的聊天机器人&#xff0c;创造了史上消费应用最快达成1亿用户的历史&#xff0c;在推出仅仅两个月后&#xff0c;月活跃用户估计已达1亿&#xff0c;成为历史…