Java集合类

目录

一、整体架构图

二、List集合类(有序的,可重复的)

1.顺序列表ArrayList

2.链式列表LinkedList

三、Set集合类(不可重复)

1.HashSet(哈希集合)

2.LinkedHashSet(链式哈希集合)

3.TreeSet(树形集合)

四、Map集合类(无序,键唯一,值不唯一)

五、数组


一、整体架构图

二、List集合类(有序的,可重复的)

1.顺序列表ArrayList

ArrayList实现了List的接口,是基于可变长度属组的列表实现

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

public class y2 {
    public static void main(String[] args) {
        //定义方法
        List<String> list = new ArrayList<String>();
        //添加元素
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        //遍历方法1,使用size与get方法
        for (int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }
        //删除下标为1的元素
        list.remove(1);
        //遍历方法2:采用加强for循环的方法
        for (String s:list){
            System.out.println(s);
        }
        //获得下标为1的元素
        System.out.println(list.get(1));
        //遍历方法3:使用Iterator接口
        Iterator<String> iterator = list.iterator();
        //Iterator主要方法:
        //hasNext()用来判断是否还有下一个元素
        //next()用来获得下一个元素
        //remove用来删除当前元素
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
        //List集合排序
        Collections.sort(list);
    }
}

2.链式列表LinkedList

LinkedList也实现了List接口,其实质是基于指针(链)的列表实现

import java.util.*;
public class y2 {
    public static void main(String[] args) {
        //定义方法
        LinkedList<String> list = new LinkedList<String>();
        //添加元素
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        //向列表头插入一个元素
        list.addFirst("zzm");
        //向列表尾插入一个元素
        list.addLast("mzm");

        //遍历方法1,使用size与get方法
        for (int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }
        System.out.println("---------------");
        //删除下标为1的元素
        list.remove(1);
        //删除列表头的元素
        list.removeFirst();
        //删除列表尾的元素
        list.removeLast();
        //遍历方法2:采用加强for循环的方法
        for (String s:list){
            System.out.println(s);
        }
        System.out.println("---------------");
        //获得下标为1的元素
        System.out.println(list.get(1));
        //获得列表头元素
        System.out.println(list.getFirst());
        //获得列表尾元素
        System.out.println(list.getLast());

        System.out.println("---------------");
        //遍历方法3:使用Iterator接口
        Iterator<String> iterator = list.iterator();
        //Iterator主要方法:
        //hasNext()用来判断是否还有下一个元素
        //next()用来获得下一个元素
        //remove用来删除当前元素
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
        //List集合排序
        Collections.sort(list);
    }
}

三、Set集合类(不可重复)

1.HashSet(哈希集合)

HashSet实现了Set接口,并且不保证元素的迭代顺序,对其进行添加、删除元素等操作的时间复杂度是常量级的。

import java.util.HashSet;
import java.util.Set;

public class y3 {
    public static void main(String[] args) {
        //定义
        Set<String> hashSet = new HashSet<String>();
        //添加元素
        hashSet.add("aaa");
        hashSet.add("bbb");
        hashSet.add("ccc");
        //遍历结果是无序的
        System.out.println(hashSet);
    }
}

2.LinkedHashSet(链式哈希集合)

LinkedHashSet继承与HashSet,其也是根据元素的哈希码来决定元素的存储位置。

import java.util.LinkedHashSet;
import java.util.Set;

public class y3 {
    public static void main(String[] args) {
        //定义
       Set<String> linkedHashSet = new LinkedHashSet<String>();
        //添加元素
        linkedHashSet.add("aaa");
        linkedHashSet.add("bbb");
        linkedHashSet.add("ccc");
        linkedHashSet.add("zzm");
        //遍历结果是无序的
        System.out.println(linkedHashSet);
    }
}

3.TreeSet(树形集合)

TreeSet采用树形结构来存取集合元素(输出为有序,默认升序)

import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;

public class y3 {
    public static void main(String[] args) {
        //定义
       Set<String> treeSet = new TreeSet<String>();
        //添加元素
       treeSet.add("aaa");
       treeSet.add("ddd");
       treeSet.add("ccc");
        //遍历结果是有序的(默认为升序)
        for (String s:treeSet){
            System.out.println(s);
        }

        //创建TreeSet时指定了比较器(覆盖了String默认比较规则)
        Set<String> treeSet2 = new TreeSet<String>(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o2.length()-o1.length();
            }
        });
        treeSet2.add("abcde");
        treeSet2.add("zed");
        treeSet2.add("abcd");
        //按照字符串长度降序排列字符串
        for (String s2:treeSet2){
            System.out.println(s2);
        }
    }
}

四、Map集合类(无序,键唯一,值不唯一)

import java.util.*;

public class y4{
    public static void print(Map<Integer,String> map) {
        map.put(1,"张三");
        map.put(3,"王五");
        map.put(2,"李四");
        //获取map对象中键的集合
        Set<Integer> set = map.keySet();
        //遍历这个map
        for (Integer key:set){
            System.out.println(key+": "+map.get(key));
        }
    }
    public static void main(String[] args) {
        //HashMap存放的次序
        print(new HashMap<Integer,String>());
        //LinkedHashMap存放次序
        print(new LinkedHashMap<Integer,String>());
        //TreeSet存放次序
        print(new TreeMap<Integer,String>());
    }

}

由运行结果得知,HashMap的遍历结果是无序的,LinkedHashMap是按照加入顺序遍历,TreeMap是按照值升序遍历

五、数组

import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;

public class y5 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //定义数组
        int[] a = new int[10];
        //为一个数组赋初值
        for (int i=0;i<10;i++){
            a[i] = sc.nextInt();
        }
        //数组遍历
        for (int s:a){
            System.out.print(s+" ");
        }
        System.out.println();
        //数组排序(默认为升序)
        Arrays.sort(a);
        for (int s:a){
            System.out.print(s+" ");
        }
        System.out.println();
        //数组降序排列(需要包装类型数组)
        Integer[] integers = new Integer[5];
        for (int i=0;i<5;i++){
            integers[i] = sc.nextInt();
        }
        Arrays.sort(integers, Collections.reverseOrder());
        for (Integer s:integers){
            System.out.print(s+" ");
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL实战之主从数据同步机制

主从同步的重要性&#xff1a; 解决数据可靠性的问题需要用到主从同步&#xff1b;解决 MySQL 服务高可用要用到主从同步&#xff1b;应对高并发的时候&#xff0c;还是要用到主从同步。 一、MySQL 主从同步流程 当客户端提交一个事务到 MySQL 的集群&#xff0c;直到客户端收…

跨域时怎么处理 cookie?

前言 一个请求从发出到返回&#xff0c;需要浏览器和服务端的协调配合。浏览器要把自己的请求参数带给服务端&#xff0c;服务端校验参数之后&#xff0c;除了返回数据&#xff0c;也可能会顺便把请求是否缓存&#xff0c;cookie等信息告诉浏览器。当请求是跨域请求的时候&…

项目调研 | Loopring研究报告

一、项目简介及愿景 Loopring协议是一个专为应用程序开发的 zkRollup 协议、一个中继器、一个 L2 非托管交易所、一个智能钱包。用户可以在其中使用、交易和存储资产&#xff0c;同时让资产获得增长。 上述Loopring这些Title具体详情如下&#xff1a; 作为协议&#xff0c;Loop…

[Golang] 设计模式以及单例设计模式实例实现

&#x1f61a;一个不甘平凡的普通人&#xff0c;致力于为Golang社区和算法学习做出贡献&#xff0c;期待您的关注和认可&#xff0c;陪您一起学习打卡&#xff01;&#xff01;&#xff01;&#x1f618;&#x1f618;&#x1f618; &#x1f917;专栏&#xff1a;算法学习 &am…

金3银四结束了,回顾一下我2个月面试的公司....

金三银四结束了&#xff0c;还没有 offer 的同学不要气馁&#xff0c;该来的迟早会来。楼主从 年底 月有想法跳槽开始准备春招&#xff0c;一开始也是惨不忍睹&#xff0c;后来慢慢进入状态最近的面试基本都能走到终面&#xff0c;所以好好坚持&#xff0c;最后一定会有好结果的…

Pandas + ChatGPT 超强组合,pandas-ai :交互式数据分析和处理新方法

Python Pandas是一个为Python编程提供数据操作和分析功能的开源工具包。这个库已经成为数据科学家和分析师的必备工具。它提供了一种有效的方法来管理结构化数据(Series和DataFrame)。 在人工智能领域&#xff0c;Pandas经常用于机器学习和深度学习过程的预处理步骤。Pandas通过…

基于主从博弈的综合能源服务商动态定价策略研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

在滴滴和字节跳动划水4年,过于真实了...

先简单交代一下吧&#xff0c;沅哥是某不知名211的本硕&#xff0c;18年毕业加入滴滴&#xff0c;之后跳槽到了头条&#xff0c;一直从事测试开发相关的工作。之前没有实习经历&#xff0c;算是四年半的工作经验吧。 这四年半之间他完成了一次晋升&#xff0c;换了一家公司&am…

如何利用python实现灰色关联分析?

1.灰色关联分析简介 灰色系统这个概念是相对于白色系统和黑色系统而言的。从控制论的知识里&#xff0c;颜色一般代表对于一个系统我们已知信息的多少&#xff0c;白色代表信息量充足&#xff0c;黑色代表我们其中的构造并不清楚的系统&#xff0c;而灰色介于两者之间&#xf…

LabVIEWCompactRIO 开发指南18 使用网络流发送消息和命令

LabVIEWCompactRIO 开发指南18 使用网络流发送消息和命令 默认情况下&#xff0c;网络流旨在最大化吞吐量&#xff0c;但可以轻松实现它们以最大化发送命令或消息的低延迟。 为本部分提供LabVIEW示例代码 命令发送器体系结构 命令发送器是CompactRIO控制器必须响应的任何命…

pga_aggregate_limit和process关系

之前部署19c时&#xff0c;配置pga_aggregate_limit都是直接配置成0了&#xff0c;配置processes的大小也比较随意&#xff0c;上周维护一个客户安装的环境&#xff0c;重启数据库数据库时告警了&#xff0c;才第一次认真对面了 SYSorcl1> startup ; ORA-00093: pga_aggreg…

无代码时代来了,程序员会失业吗?不,程序员又不够用了!

有人问我无代码时代来了&#xff0c;程序员会失业吗&#xff1f;太难了&#xff0c;秃了头就算了&#xff0c;连工作也保不住了&#xff1f; 先说观点&#xff1a;并不会 因为&#xff0c;无代码不是真正意义上的无代码。 无代码开发的使用对象是编程小白&#xff08;我猿是…

Linux篇1

Linux 1. 概述1.1 内容概要1.2 Linux发展1.3 Linux对比Windows 2. 虚拟机下安装CentOS系统2.1 下载安装VMware2.1.1 官网下载VMware软件2.1.2 安装VMware 2.2 下载CentOS镜像2.3 创建虚拟机&#xff08;在虚拟机中安装CentOS&#xff09;2.3.1 创建虚拟硬件环境2.3.2 安装CentO…

字典核心底层原理

字典对象的核心是散列表。散列表是一个稀疏数组&#xff08;总是有空白元素的数组&#xff09;&#xff0c;数组的每个单元叫做bucket。每个bucket有两部分&#xff1a;一个是键对象的引用&#xff0c;一个是值对象的引用。 由于&#xff0c;所有bucket结构和大小一致&#xf…

Linux:rpm查询安装 yum安装

环境&#xff1a; 需要插入安装镜像 镜像内有所需的安装库 我这里使用的虚拟机直接连接光盘 连接的光盘挂载在/dev/cdrom 由于我们无法直接进入&#xff0c;所以选择把/dev/cdrom挂载到别的地方即可 mount /dev/cdrom /123 将/dev/cdrom 挂载到 /123 目录下 Packages下就是…

基于AT89C52单片机的温度检测设计与仿真

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87770153 源码获取 主要内容: 本设计是基于52系列的单片机进行的设计,可以完成温度的测控,可以实现实际温度与设定温度区域的比较,并在LED上相应的显示结果。设计过程在硬…

sort、uniq、tr、cut命令的使用

sort、uniq、tr、cut命令的使用 一、sort二、uniq三、tr四、cut 一、sort sort是一个以行为单位对文件内容排序的工具&#xff0c;也可以根据不同的数据类型来排序&#xff0c;例如数据和字符的排序就不一样。比较原则是从首字符向后&#xff0c;依次按ASCII码进行比较&#x…

解决chatgpt网络错误,频繁掉线的问题,那就使用KeepChatGPT

文章目录 解决chatgpt出现An error occurred. If this issue persists please contact us through our help center at help.openai.com问题起因对比原作者github地址安装步骤浏览器要求安装油猴安装KeepChatGPT插件使用方法功能栏说明功能说明如下关于 取消审计 功能关于 调整…

C++类与对象Plus

我们之前讲的都是类与对象的基础&#xff0c;以及类中的几个默认函数等&#xff0c;今天我们就讲一下类与对象的其他东西 初始化列表 在我们的默认构造函数的时候&#xff0c;我们在初始化的时候我们都是在构造函数中完成我们的初始化任务 我们现在来看一个类 我们看一下我们…

【C】模拟实现memcpy,memmove内存函数

目录 内存函数模拟实现 1、memcpy模拟实现 2、memmove模拟实现 3、测试案例代码 内存函数模拟实现 C 库函数 memcpy 从存储区 str2 复制 n 个字节到存储区 str1。这个函数在遇到\0的时候并不会停下来。如果str1和str2有任何的重叠&#xff0c;复制的结果都是未定义的。 me…