Java中集合的基本使用
文章目录
- 集合的使用
- 集合与数组的区别
- 集合体系结构介绍
- 集合对泛型的支持
集合的使用
集合与数组的区别
集合和数组都是容器
数组的特点:
数组定义完成并启动后,类型确定、长度固定。
适合元素的个数和类型确定的业务场景,不适合做需要增删数据操作。
集合的特点:
集合的大小不固定,启动后可以动态变化,类型也可以选择不固定; 集合更像气球, 更加灵活。
集合非常适合做元素的增删操作。
注意: 集合中只能存储引用类型数据, 如果要存储基本类型数据可以选用包装类
数组和集合的对比:
- 数组和集合的元素存储的对比
数组定义后类型确定,长度固定
集合类型可以不固定,长度(大小)是可变的
- 数组和集合存储元素的类型对比
数组可以存储基本类型和引用类型的数据。
集合只能存储引用数据类型的数据。
- 数组和集合的适用场景
数组适合做数据个数和类型确定的场景。
集合适合做数据个数不确定,且要做增删元素的场景。
集合体系结构介绍
集合主要分为两个体系:
体系一: Collection单列集合,每个元素(数据)只包含一个值
体系二: Map双列集合,每个元素包含两个值(键值对)。
Collection集合的体系:
每一个体系结构下面又会分很多种集合, 前期先掌握Collection集合体系的使用。
Collection是一个接口, Collection接口下面又有List和Set两个接口
List系列集合:添加的元素是有序、可重复、有索引。
- ArrayList、LinekdList 是 List 接口常用的实现类:有序、可重复、有索引。
Set系列集合:添加的元素是无序、不重复、无索引。
- HashSet 是 Set 接口常用的实现类: 无序、不重复、无索引;
- LinkedHashSet 是 Set 接口常用的实现类: 有序、不重复、无索引;
- TreeSet 也是 Set 接口的常用实现类:按照大小默认升序排序、不重复、无索引。
(有序指的是先添加的存储到前面, 后添加的存储到后面; 无序则先添加的有可能存储到前面有可能存储到后面, 后添加的同理)
演示代码:
ArrayList: 有序, 可重复, 有索引
public static void main(String[] args) {// ArrayList有序 可重复ArrayList list = new ArrayList();list.add("a");list.add("b");list.add("a");list.add(1);list.add(2);list.add(true);System.out.println(list); // [a, b, a, 1, 2, true]// 有索引System.out.println(list.get(4)); // 2
}
HashSet: 无序, 不重复, 无索引
public static void main(String[] args) {// HashSet 无序 不重复 无索引HashSet list = new HashSet();list.add("a");list.add("b");list.add("a");list.add(1);list.add(2);list.add(true);System.out.println(list); // [a, 1, b, 2, true]
}
集合对泛型的支持
集合都是支持泛型的,可以在编译阶段约束集合只能操作某种数据类型
约束了泛型后就不能再向集合中添加其他类型的元素, 离去下面代码中约束了泛型是String, 就不能再添加String之外的其他类型的元素
public static void main(String[] args) {// 约束泛型后就不能添加其他类型的元素ArrayList<String> list1 = new ArrayList<String>();// JDK 1.7开始后面的泛型类型申明可以省略不写ArrayList<String> list2 = new ArrayList<>();
}
注意:集合和泛型都只能支持引用数据类型,不支持基本数据类型,所以集合中存储的元素都认为是对象。
public static void main(String[] args) {// 错误演示, 编辑器会报错ArrayList<int> lists = new ArrayList<int>();
}
如果在集合中一定要存储基本类型的数据怎么办?
public static void main(String[] args) {// 存储基本类型要使用包装类ArrayList<Integer> lists1 = new ArrayList<>();lists1.add(10);lists1.add(20);lists1.add(50);System.out.println(lists1); // [10, 20, 50]ArrayList<Double> lists2 = new ArrayList<>();lists2.add(12.23);lists2.add(15.43);lists2.add(10.63);System.out.println(lists2); // [12.23, 15.43, 10.63]
}
小结:
集合的代表是?
Collection接口。
Collection集合分了哪两大常用的集合体系?
List系列集合:添加的元素是有序、可重复、有索引。
Set系列集合:添加的元素是无序、不重复、无索引。
如何约定集合存储数据的类型,需要注意什么?
集合支持泛型。
集合和泛型不支持基本类型,只支持引用数据类型。
Java中集合的基本使用相关推荐
- java中集合的排序
java中集合的排序 import java.util.Set; import java.util.HashSet; import java.util.List; import java.util.A ...
- java中集合选取怎么选_集合中的可选
java中集合选取怎么选 有时有人认为Optional类型值得在集合中使用. 据称,它解决了以下问题: HashMap在没有键映射以及值null映射到键的情况下返回null . 如果使用Map< ...
- java中集合判空_Java中的类型安全的空集合
java中集合判空 我以前曾在Java Collections类的实用程序上进行过博客撰写,并且特别地在使用Usings Collections Methods上的博客emptyList(),empt ...
- Java中集合拥有的共性方法
在Java中集合的共性方法 1.在Java中集合作为最顶层的集合,他拥有所有集合有的共性方法.所以在定义实现类的时候可以使用多态. 集合拥有的共性方法: public boolean add(E e) ...
- java中集合的分类以及集合的选择
一.java中的集合 一般同学都是从c语言起步的,刚开始使用java时,会对集合这个概念比较陌生,在c语言中我们表示数据的集合往往使用数组,在编写c程序时觉得数组完全可以满足我们的基本需要.而到了ja ...
- java中集合转数组中_JAVA中集合转数组遍历
JAVA中集合的遍历的一种方法时集合转数组遍历,也是就调用Collection中的toArray(). 代码: public static void main(String[] args) { // ...
- java中集合的模型特点_Java 学习笔记(十四)集合
集合 在开发的时候,如果需要存储多个数据,可以使用数组,不过数据是固定长度的,如果需要存储可变长度的多个数据,可以使用集合.集合提供存储空间可变的存储类型,存储的容量可以实时改变 集合分类 Colle ...
- java中集合和数据库中_java中list集合的内容,如何使用像数据库中group by形式那样排序...
标签:java中list集合的内容,如何使用像数据库中group by形式那样排序,比如: 有一个 List 他中包含了一些如下的内容 JavaBean: name money (名称) (金 ...
- Scala中集合类型与java中集合类型转换
对于java中的集合元素并不能在scala中拿来就用的,需要进行相应的转换. 1. 转换规则如下 从下面可以看出,有些可以相互转换的,有些只能单向转换: scala.collection.Iterab ...
- java中集合的区别_Java中的集合与集合之间的区别
Java收集框架用于操纵对象的收集.收集框架包含多个包装器类,便利类,用于传统实现的类,例如vector和Hashtable,收集接口等. 集合是Java集合框架中的接口.它分为两部分-Java ut ...
最新文章
- Suricata的输出
- 火出圈!河南大学教授毕业典礼金句频现:躺平得了初一,躺平不到十五!
- linux dig 命令使用方法
- 为什么说Android才是游戏开发者的乐土?
- BackgroundWorker
- ubuntu100%快速安装搜狗输入法
- 编译py-faster-rcnn的问题汇总及解决方法
- EF 从sqlserver2008 迁移到 2005出现的BUG
- 在.NET 6 中如何创建和使用 HTTP 客户端 SDK
- qt调用mysql调用了存储过_Qt调用Server SQL中的存储过程
- 【elasticsearch】org.elasticsearch.cluster.block.ClusterBlockException: blocked by: [SERVICE_UNAVAILA
- 10BASE-2 是什么意思
- Comparable与Comparator对象比较
- 【SSM -MyBatis篇03】MyBatis Generator(MBG)配置属性详解(基于MyBatis3) - 逆向生成 - 配置MBG模板
- DevExpress WinForm控件入门指南——数据管理控件
- 《算法导论》第三版第6章 堆排序 练习思考题 个人答案
- java过滤空号了停机号_手机号码空号检测
- Android smali语法
- 腾讯实习生招聘失败经历分享
- 为找房方便,将sohu房产的rss 转成全文的!