发布于2022-12-03 09:57 阅读(687) 评论(0) 点赞(9) 收藏(0)
集合和数组都是容器
数组的特点:
数组定义完成并启动后,类型确定、长度固定。
适合元素的个数和类型确定的业务场景,不适合做需要增删数据操作。
集合的特点:
集合的大小不固定,启动后可以动态变化,类型也可以选择不固定; 集合更像气球, 更加灵活。
集合非常适合做元素的增删操作。
注意: 集合中只能存储引用类型数据, 如果要存储基本类型数据可以选用包装类
数组和集合的对比:
数组定义后类型确定,长度固定
集合类型可以不固定,长度(大小)是可变的
数组可以存储基本类型和引用类型的数据。
集合只能存储引用数据类型的数据。
数组适合做数据个数和类型确定的场景。
集合适合做数据个数不确定,且要做增删元素的场景。
集合主要分为两个体系:
体系一: 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系列集合:添加的元素是无序、不重复、无索引。
如何约定集合存储数据的类型,需要注意什么?
集合支持泛型。
集合和泛型不支持基本类型,只支持引用数据类型。
原文链接:https://blog.csdn.net/m0_71485750/article/details/127338353
作者:javabb
链接:http://www.javaheidong.com/blog/article/582788/13fddc4e47a9bd1de649/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!