JAVA集合
来源:互联网 发布:python for循环实例 编辑:程序博客网 时间:2024/06/14 01:41
JAVA集合概述:集合是JAVA中特别特别特别重要的一部分,集合说白了就是一个容器将数据存储在集合里面,java里面的集合其实底层无非就是用数组,链表,二叉树实现的,数组一旦确定了长度就不可以改变,而集合可以动态扩容,当容器快要存储不下数据的时候它可以再次扩容,当然如果你想让这个集合好用的话还可以自己封装一些排序和查找的算法在里面,它在现实的项目开发中是必需要用到的,无论是做web网站,手机app,游戏,无非就是高效的展示用户自己想要获取的数据(举例,淘宝搜索界面),而我们去开发一款产品的时候如何把这些数据以最短的时间展示给用户看的就是你封装算法的基本功了,像bat互联网大公司在笔试和面试当中考查的就是你怎么用java集合去处理数据量大的业务场景。当然我们今天刚刚开始学,只要理解如何用java代码创建一个集合对象,去使用这些对象去存储数据,你的天赋就已经非常高了,至于理论知识以后有时间自己可以去多研究研究。
最后,要指出一点,对于集合,我认为关注的点主要有四点:
1、是否允许空
2、是否允许重复数据
3、是否有序,有序的意思是读取数据的顺序和存放数据的顺序是否一致
4、是否线程安全
Java集合框架的体系结构:
这张图不需要你们背下来,在做项目的时候使用的最多的集合是ArrayList,HashMap,我们只要会创建一个ArrayList对象并且使用就行了,那我们会使用ArrayList这个对象了,他们上面这一坨是什么,上面哪些就是他们所实现的接口,举例打电话(),hashmap是以键值对的形式存储,它的底层是基于数组和链表实现,hashmap的存储原理,首先根据key得到int型的hashcode然后经过hash算法得到这个数组中的索引,通过索引去判断数组中该位置是否已经有元素了,如果有元素的话,就查找该元素下一个指向的位置.
Collection接口
1、是List、Set和Queue接口的父接口;
2、定义了可用于操作List、Set和Queue的方法——增删改查;
List接口及其实现类——ArrayList
- List(序列),元素有序,并且可重复;
- List可以精确控制元素的插入位置,或删除指定位置的元素;
- ArrayList——数组序列,是List的一个重要实现类;
- ArrayList底层是由数组实现的
泛型集合中,不能添加泛型规定的类型及其子类型以外的对象,否则会报错。
泛型集合中的限定类型,不能使用基本类型,必须用基本类型的包装类。
Set接口及其实现类——HashSet
- Set(集),元素无序,并且不可以重复;
- HashSet——哈希集,是Set的一个重要实现类;
Map接口
- Map提供了一种映射关系,元素是以键值对(key-value)的形式存储的,能根据key快速查找value;
- Map中的键值对以Entry类型的对象实例形式存在;
- key值不能重复,value值可以重复;
- key对value是多(一)对一的关系;
- Map接口提供了返回key值集合、value值集合、Entry值集合,的方法;
- Map支持泛型,形式如:Map<K,V>
HashMap类
- HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现;
- HashMap中的Entry对象是无序排列的;
- Key值和value值都可以为null,但是一个HashMap只能有一个Key值为null的映射(Key值不可重复);
最后做实际项目的时候要理解当前项目的业务场景要适用哪种java集合,比如arrayList底层是基于数组实现的,对数组了解的知道,他的按序查找与添加的效率较高,删除效率较低,linkedList是基于链表实现的,它适合在链表中频繁删除和添加元素,但是查找效率较低,是否满足线程安全.
- Java集合:集合框架
- java集合---set集合
- JAVA 集合 的 集合
- 【集合】Java集合对比
- JAVA集合-Map集合
- JAVA集合-Set集合
- JAVA集合-List集合
- java集合------Map集合
- Java集合----List集合
- Java集合----Set集合
- Java集合----Map集合
- JAVA集合
- JAVA集合
- Java集合
- JAVA集合
- Java集合
- Java集合
- java 集合
- spring beans源码解读
- 【备忘】最新oracle11g DBA 开发和应用数据库视频教程
- BZOJ 4004 装备购买(贪心+线性基)
- 提高工作效率,使用Bug分类列表来更好的进行软件测试
- SCAU B 体育课
- JAVA集合
- GUI界面的选择
- [FFT] Atcoder AGC005F. Many Easy Problems
- Databinding的使用与自定义控件的全局注入
- node 操作文件流 fs 同步与异步 流式文件的写入与读取
- python操作mysql
- Static、静态关键字、详解
- 二叉树构造:二叉树的广度优先遍历
- Sturts2 实现单文件和多文件的上传