文章目录

  • 集合的使用
    • 集合与数组的区别
    • 集合体系结构介绍
    • 集合对泛型的支持

集合的使用

集合与数组的区别

集合和数组都是容器

数组的特点:

数组定义完成并启动后,类型确定、长度固定。

适合元素的个数和类型确定的业务场景,不适合做需要增删数据操作。

集合的特点:

集合的大小不固定,启动后可以动态变化,类型也可以选择不固定; 集合更像气球, 更加灵活。

集合非常适合做元素的增删操作。

注意: 集合中只能存储引用类型数据, 如果要存储基本类型数据可以选用包装类

数组和集合的对比:

  • 数组和集合的元素存储的对比

数组定义后类型确定,长度固定

集合类型可以不固定,长度(大小)是可变的

  • 数组和集合存储元素的类型对比

数组可以存储基本类型和引用类型的数据。

集合只能存储引用数据类型的数据。

  • 数组和集合的适用场景

数组适合做数据个数和类型确定的场景。

集合适合做数据个数不确定,且要做增删元素的场景。

集合体系结构介绍

集合主要分为两个体系:

体系一: 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中集合的基本使用相关推荐

  1. java中集合的排序

    java中集合的排序 import java.util.Set; import java.util.HashSet; import java.util.List; import java.util.A ...

  2. java中集合选取怎么选_集合中的可选

    java中集合选取怎么选 有时有人认为Optional类型值得在集合中使用. 据称,它解决了以下问题: HashMap在没有键映射以及值null映射到键的情况下返回null . 如果使用Map< ...

  3. java中集合判空_Java中的类型安全的空集合

    java中集合判空 我以前曾在Java Collections类的实用程序上进行过博客撰写,并且特别地在使用Usings Collections Methods上的博客emptyList(),empt ...

  4. Java中集合拥有的共性方法

    在Java中集合的共性方法 1.在Java中集合作为最顶层的集合,他拥有所有集合有的共性方法.所以在定义实现类的时候可以使用多态. 集合拥有的共性方法: public boolean add(E e) ...

  5. java中集合的分类以及集合的选择

    一.java中的集合 一般同学都是从c语言起步的,刚开始使用java时,会对集合这个概念比较陌生,在c语言中我们表示数据的集合往往使用数组,在编写c程序时觉得数组完全可以满足我们的基本需要.而到了ja ...

  6. java中集合转数组中_JAVA中集合转数组遍历

    JAVA中集合的遍历的一种方法时集合转数组遍历,也是就调用Collection中的toArray(). 代码: public static void main(String[] args) { // ...

  7. java中集合的模型特点_Java 学习笔记(十四)集合

    集合 在开发的时候,如果需要存储多个数据,可以使用数组,不过数据是固定长度的,如果需要存储可变长度的多个数据,可以使用集合.集合提供存储空间可变的存储类型,存储的容量可以实时改变 集合分类 Colle ...

  8. java中集合和数据库中_java中list集合的内容,如何使用像数据库中group by形式那样排序...

    标签:java中list集合的内容,如何使用像数据库中group by形式那样排序,比如: 有一个 List 他中包含了一些如下的内容 JavaBean: name    money (名称)  (金 ...

  9. Scala中集合类型与java中集合类型转换

    对于java中的集合元素并不能在scala中拿来就用的,需要进行相应的转换. 1. 转换规则如下 从下面可以看出,有些可以相互转换的,有些只能单向转换: scala.collection.Iterab ...

  10. java中集合的区别_Java中的集合与集合之间的区别

    Java收集框架用于操纵对象的收集.收集框架包含多个包装器类,便利类,用于传统实现的类,例如vector和Hashtable,收集接口等. 集合是Java集合框架中的接口.它分为两部分-Java ut ...

最新文章

  1. Suricata的输出
  2. 火出圈!河南大学教授毕业典礼金句频现:躺平得了初一,躺平不到十五!
  3. linux dig 命令使用方法
  4. 为什么说Android才是游戏开发者的乐土?
  5. BackgroundWorker
  6. ubuntu100%快速安装搜狗输入法
  7. 编译py-faster-rcnn的问题汇总及解决方法
  8. EF 从sqlserver2008 迁移到 2005出现的BUG
  9. 在.NET 6 中如何创建和使用 HTTP 客户端 SDK
  10. qt调用mysql调用了存储过_Qt调用Server SQL中的存储过程
  11. 【elasticsearch】org.elasticsearch.cluster.block.ClusterBlockException: blocked by: [SERVICE_UNAVAILA
  12. 10BASE-2 是什么意思
  13. Comparable与Comparator对象比较
  14. 【SSM -MyBatis篇03】MyBatis Generator(MBG)配置属性详解(基于MyBatis3) - 逆向生成 - 配置MBG模板
  15. DevExpress WinForm控件入门指南——数据管理控件
  16. 《算法导论》第三版第6章 堆排序 练习思考题 个人答案
  17. java过滤空号了停机号_手机号码空号检测
  18. Android smali语法
  19. 腾讯实习生招聘失败经历分享
  20. 为找房方便,将sohu房产的rss 转成全文的!

热门文章

  1. 分享一些IT免费在线学习网站
  2. 简单介绍JS构造函数中的原型
  3. ChrisRenke/DrawerArrowDrawable源码解析
  4. 基于RK3399+FPGA的地面测试台多参数数据记录仪方案(一)硬件设计
  5. ES6新增的数组方法
  6. linux怎样关闭dns缓存,Linux设置DNS地址及清理DNS缓存方法
  7. IDEA检测不到JDK明明有JDK
  8. Vue.js手写笔记, 持续更新
  9. CentOS 7 运维优化
  10. 源杰半导体科创板IPO过会:拟募资9.8亿 实控人为美国籍