JAVA中的集合框架

Java中的集合框架 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。List接口是一个有序集合,其元素以线性方法存储,集合中允许存放重复的元素。List接口及其实现类——ArrayList![ArrayList 类是数组列表类,实现了可变长度的数组,允许对集合中的元素进行快速的访问,但向ArrayList 集合中插入或删除速度较慢。。(需要移动元素)ArrayList 集合允许所有的元素,包括null。 阅读详情

java中所有称之为集合的东西,都是保存的对象的引用。也就是说,如果放一个基本数据类型,是通不过编译的。放个基本数据类型的数组是可以的,比如说int[3]等等。

1、java数组
也就是我们熟悉的A[20]类似的东西。数组也是一个对象。直接继承object类。但是数组对象不是任何类的实例化,也不必追问他的源码在哪。个别同学可能会说是它是java.util.Arrays的实例化,这显然是错误的,每次使用数组前也不见你引入这个包啊。事实上,Arrays类是一个工具类,除了private的构造器外,全部是static的方法。

其实,数组对象它是由JVM产生的。不实现任何接口。必须指定长度。数组中提供的方法也不少。我们常见的两种定义方式如下。当然,我们在生命的时候不需要指定大小。

        public int m_array[];
        ....
        int[] array = {1,2,3};
        System.out.println(array.toString());
        //输出为[I@15db9742,[I为类名。
        System.out.println(Arrays.toString(array));
        //输出为[1, 2, 3]
        int[] array1 = new int[5];
        array1[1]=3;
        array1[3]=2;
        System.out.println(Arrays.toString(array1));

上面比较奇怪的是第一句打印出来的东西。也就是说数组内部的tostring方法和我们想象的工作不一样。究竟返回的是什么呢?实际上是object类中下面方法。也就是hashcode。
getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
个别人会认为返回的是内存地址。实际上,在java里内存地址的概念是毫无意义的。本来也不允许操作指针运算。这个hash码便是JVM管理内存的凭据。注意,hash码相等时完全有可能的,但是这只能证明两个对象在一条哈希链上。

2 Collection接口和AbstractCollection派生的集合框架
Java中collection接口继承了iterable接口,确保可以获取一个迭代器
java设计者认为,collection接口中至少应该提供下列方法
(1)对内部元素的操作
add,renove,clear,size,isempty
(2)其他语言相关的
toArray,hashcode,equals
着重提到的是重写的tostring方法。也就是我们比较熟悉的了。打印出来会是[1,2,3]的形式
Returns a string representation of this collection. The string representation consists of a list of the collection’s elements in the order they are returned by its iterator, enclosed in square brackets (“[]”). Adjacent elements are separated by the characters “, ” (comma and space). Elements are converted to strings as by String.valueOf(Object).

A.Set接口和AbstractSet的派生类
以hashset为例我们来说明为什么set可以做到没有重复元素
hashset在底层维护的是一个hashmap
在hashset内部维护一个PRESENT的假值
private static final Object PRESENT = new Object();
在加入新元素时作为MAP的键加入:上述的PRESENT则作为值。

    public boolean add(E e) {
        return map.put(e, PRESENT)==null;
    }

这样,根据map的机制,就可以实现没有重复元素了。MAP1的机制,我们后续在讲。

B.List接口和AbstractList的派生类

vector类的方法是同步的。也就是说同一时刻只能由一个线程访问该类。arraylist则相反。

        Vector<String> v1 = new Vector<String>(20);     
        v1.addElement("one");
        v1.addElement("three");
        v1.insertElementAt("two", 1);
        System.out.println(v1);

其中,insertElementAt是在所给位置的地方插入。将该位置的元素后移。声明时所使用的大小是vector的最大大小,而不是实际大小。也就说,如果vector中所给位置还没有赋值,插入变回抛出异常 java.lang.ArrayIndexOutOfBoundsException。

C.Queen接口和AbstractQueen的派生类

3、MAP接口派生的
这里写图片描述
当然先要讲讲前面提到过的hashmap。hashmap的实现还是很复杂的
JAVA里,所有数据结构都离不开基本形态:数组和链表(引用)。HashMap也不例外。结构如下
这里写图片描述

在代码中生成了一个table。
transient Node

        Node(int hash, K key, V value, Node<K,V> next) {
            this.hash = hash;
            this.key = key;
            this.value = value;
            this.next = next;
        }

我们来看存储的代码
首先计算KEY的hash值

    public V put(K key, V value) {
        return putVal(hash(key), key, value, false, true);
    }

计算hash值的时候采取的是key内部的hashcode方法,

    static final int hash(Object key) {
        int h;
        return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
    }

object类就有hashcode方法。所以,只要你不放一个基本数据类型就可以了。在putval中,要根据hash值和现在数组的长度计算存储位置。如果计算到的存储位置不为空,那么,就通过链表,找到最后一个。

Java集合框架中的队列--Queue Java中的队列 ======== 最近在看《java核心技术》,在学习到集合框架的队列一处时,发现书中介绍不太详尽,直接从Deque接口(双端队列)及其实现类开始讲起。结合网络上的博文,在此写下自己的理解以加强记忆并记录下学习所得,如有不正欢迎指出。 1. 关系 在java5中新增加了java.util.Queue接口,定义了队列的一些基本操作,他扩展了Collection接口。java... 阅读详情

相关推荐

Java 集合框架中的集合转换技巧

Java集合框架(Java Collections Framework)是Java开发的“数据处理工具箱”,包含List(有序列表)、Set(无重复集合)、Map(键值对映射)等核心容器。从数据库查回一个List<User>,需要去重(转成Set);接口返回的需要按顺序展示(转回List);批量操作时,需要将按用户ID分组(转成Map<Long, List>)。本文将覆盖List/Set/Queue之间的互转List/Set与Map的转换,以及。

AI开发架构师 754

Java中的集合框架:理解Java中的数据结构和集合

数组:Java中的数组是一个动态数组,它可以通过创建新的数组对象来动态地增加或删除元素。数组可以使用[]notation来访问和操作元素,而不需要使用new关键字来创建新对象。链表:Java中的链表是一种线性数据结构,它由一组元素组成,每个元素都有一个指向下一个元素的引用。可以使用List接口来创建一个链表,而不需要显式地创建和维护元素对象。堆:Java中的堆是一种非线性数据结构,它通过在内存中创建一个栈来存储元素。堆可以使用Queue接口来创建一个堆,而不需要显式地创建和维护元素对象。

AI天才研究院 1万+

用友U8库龄分析避坑指南:物料出入库日期计算的5个常见错误

本文深入剖析了在用友U8系统中进行库龄分析时,物料出入库日期计算的五个常见陷阱。从数据源选择、业务类型过滤、计价方式逻辑、期初数据处理到查询性能优化,逐一解析错误根源并提供避坑指南,帮助企业获得准确的库龄数据,有效管理库存与资金风险。

weixin_29209801的博客 454

Java中的集合框架有哪些类型?

Java中的垃圾回收(Garbage Collection,简称GC)是一种自动管理内存的技术,它负责追踪在Java堆中不再被引用的对象,并在适当的时候释放这些对象的内存。在集合框架中,迭代器(Iterator)是一种特殊的迭代对象,它允许我们遍历集合中的元素而无需暴露集合的具体实现。1. **List**:List是一种有序的集合,可以存储任何类型的对象,并且可以按照它们在集合中的顺序进行访问。2. **Set**:Set是一种不允许有重复元素的集合,并且Set中的元素是无序的。

m0_58956056的博客 699

labview汽车电子通用测试程序架构,CAN通讯上位机

结合做过的汽车电子测试项目,车身控制器测试,CAN网络模块测试,电机控制器功能测试,汽车仪表盘视觉及功能测试、电气盒功能测试、EOL下线检测、车用空调控制器功能测试等项目,结合实际项目,整理编写的一个汽车电子,通用测试架构,包含项目的讲解等。6、数据保存 、数据处理、 曲线显示 、报警处理等。7、CAN总线故障信息监控及记录保存。2、参数设置(CAN端口及参数)5、CAN通讯+数据解析。

ali2805486883的博客 2753

富芮坤FR801xH蓝牙协议栈启动流程和notify实现温度数据主动上传

文章目录一、蓝牙协议栈启动流程1.1 初始化代码1.2 初始化流程1.3 回调函数里的初始化二、notify实现2.1 notify介绍2.2 notify实现2.3.1 定义数据2.3.2 获取连接号conidx2.3.3 gatt_notification函数的使用三、notify温度上传测试3.1 蓝牙调试工具3.2 蓝牙调试器设置3.3 测试结果四、参考链接   基于sdk开发的好处是方便项目的快速落地,现在用的是SDK里面的源文件,目前只是学习FR801xH芯片的特性,裁剪这个SDK需要点时间,

weixin_43810563的博客 4318

Java中的Map集合框架

Java中的Map接口为开发人员提供了方便而强大的数据结构,可以有效地存储和操作键值对数据。它的特性使得Map在开发中具有重要的影响,可以简化数据操作,提高代码的可读性和可维护性。

m0_50281408的博客 294

速腾RS-LiDAR-16激光雷达ROS环境搭建与点云可视化实战指南

本文提供速腾RS-LiDAR-16激光雷达在ROS环境下的完整搭建与可视化实战指南。从硬件连接、网络配置、驱动安装编译,到核心参数详解与Rviz点云可视化,手把手解决IP设置、坐标系对齐等常见问题,帮助开发者快速实现激光雷达三维点云数据的采集与显示。

weixin_29271263的博客 369

JAVA中的三大集合框架

一、List集合 1、List实现的超级父类接口:Collection   2、了解ArrayList类 A):定义的格式:ArrayList具体类型> 集合名 =  new ArrayList具体类型>();   B):数据的存储方式:底层还是用数组存储   C):对象的类型:在List集合中,如果定义集合对象时没有定义定义对象的类型,就表示什么类型的对象都可以直接存储到Lis

A20160440419的博客 5644

三态门Multisim电路仿真——硬件工程师笔记

三态门原理及应用摘要 三态门是具有高电平(1)、低电平(0)和高阻态(Z)三种输出的逻辑电路,通过使能端(EN)控制状态切换。高阻态时输出端等效断路,避免信号冲突。其核心应用包括: 总线系统:多设备共享总线时,仅使能选中设备的三态门,其余保持高阻态,防止干扰。 数据选择器:利用三态门切换多路输入信号,简化电路设计。 实现方式分两种: TTL三态门(三极管构成):低电平使能有效,仿真验证输出逻辑与高阻态。 MOS三态门(MOS管构成):高电平使能有效,仿真显示使能信号控制输出状态。 文中还附硬件工程师笔试面试

XU157303764的博客 2006

VS2019编译使用log4cplus 1.2.0

logger.properties 文件。第三步,创建项目来测试,配置库。第二步,使用VS2019编译。

h a 6 6 6 c k 为 你解决复杂难题! 527

java中的集合框架_Java中的集合框架

概念Java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象集合的作用集合框架的类型:collection和map 都是接口,不能实例化List和Queue有序、可重复,Set无序、不可重复list添加元素两种add方法1、直接添加,元素添加在队尾;对象存入集合都变成object类型,取出时需要类型转换2、指定位置添加,指定的位置(从0开始)不能超过队列的长度,否则报错(数组...

weixin_36206388的博客 72

2023年12月机器人技术等级考试试卷(三级理论) 试题解析

2023年12月机器人技术等级考试试卷(三级理论) 试题解析

http://www.cierobot.com 4095

java中的集合框架_JAVA中的集合框架(上)List

第一节 JAVA中的集合框架概述集合的概念,现实生活中:很多事物凑在一起就是一个集合;数学中的集合:具有相同属性事物的总体;JAVA中的集合:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象。集合的作用:在类的内部,对数据进行组织(如果有些属性类型相同,但意义与作用不同,咱们就不能把它们放到集合,如学生的姓名和性别属性),简单而快速的搜索大数量的条目。有的集合接口,提供了一系列排列有序的...

weixin_30124601的博客 135

【深度学习|多实例学习】多实例学习(Multiple Instance Learning, MIL)的起源、发展和应用,附代码(一)

【深度学习|多实例学习】多实例学习(Multiple Instance Learning, MIL)的起源、发展和应用,附代码(一)

2401_89898861的博客 1918

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

java的集合框架_详细介绍java中的集合框架

集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。java集合框架:1. 什么是框架:类库的集合2.集合框架:用来表示和操作的统一的架构,包含了实现集合的接口与类3.集合:存放数据的容器集合框架包含了两部分:一部分是接口,一部分是类4.为什么会出现接口:因为集合框架中的很多类 功能是相似的【所以用接口来规范类】主要结...

weixin_42513215的博客 300

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java中的集合框架

一、集合框架 集合框架---java做好的用来管理乱七八糟的一堆数据的java类库 集合----【乱七八糟的一堆】 框架-----做好的java类库 Java中的集合框架总体被分为2个大部分第一个大部分是用来处理单列数据的集合,最大的接口时Collection接口 例如:100 “Holle” Collection接口之下有两个子接口:List接口 / Set接口 List接口时用来处理有序的单列数据,可以有重复的数据。 ...

slom_fxt的博客 853

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java中的集合框架详解

Java中的集合框架详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来详细了解Java中的集合框架。Java集合框架提供了一组接口和类,用于存储和操作一组对象。集合框架包括List、Set、Queue和Map等主要接口,以及ArrayList、HashSet、LinkedList、...

weixin_41833759的博客 128

【java中的集合框架】学习接触java中的集合,走上学习数据结构道路

【数据结构】学习接触java中的集合,走上学习数据结构道路

程序员良辰 563

java中的集合框架Set 、List 、Map

java中的集合框架主要包含这三大块,我们所要掌握的主要是这三个接口及其实现类的使用方法; 首先要说的是Set  List是从Collection继承而来,而Map则不是从它继承; 对于Collection接口,有以下从教材摘抄的内容: Collection是集合框架中最根本的一个接口,它代表了各式各样的对象集合, Collection接口中的方法分为以下几类: (1)单元素的添加 、删

小小时代的专栏 860

聊聊 Java 集合框架中的 ArrayList

其实 Java 集合框架也叫做容器,主要由两大接口派生而来,一个是 ``collection``,主要存放对象的集合。另外一个是``Map``, 存储着键值对(两个对象)的映射表。下面就来说说 ``List``接口,``List``存储的元素是有序、可重复的。其下有三个子接口,ArrayList、LinkedList 和 vector。

hello_1566的博客 974

java集合重要吗_java中的最重要的 集合框架

java.util这个重要的包包含大量的类和接口,支持很多的功能。例如,java.util具有能产生伪随机数的类,还包括可以管理日期和时间、观察事件、操作位集合、标记字符串、处理格式化数据等的类。java.util包也包含了Java中功能最强大的子系统之一:集合框架(collections Framework). 以下将分析集合框架中的接口和类。集合接口:Collection允许处理一组对象,它位...

weixin_33551941的博客 358
上一篇: java日志
下一篇: JAVA中的String
define_us
博客等级 码龄14年 157粉丝 531原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值