集合 (Set List Map)
Java集合类存放于 java.util 包中,是一个用来存放对象的容器。
①、集合只能存放对象。比如你存一个 int 型数据 1放入集合中,其实它是自动转换成 Integer 类后存入的,Java中每一种基本类型都有对应的引用类型。
②、集合存放的是多个对象的引用,对象本身还是放在堆内存中。
③、集合可以存放不同类型,不限数量的数据类型。
Set集合
Set 集合; 一般指Hash Set
Hash Set
一:HashSet
-
.创建HashSet集合
—加入不同类型的元素
Set set = new HashSet(); Set< Object > set = new HashSet< Object >(); 此set集合中可以存不同的类型
— 加入相同类型的元素(用泛型进行限制)
泛型 使用泛型后集合只能存同样的类型
例: String 类型Set< String > set1 = new HashSet< String >(); set1.add("abc"); // set1.add(1); 错误
-
HashSet特点:
集合中元素不重复
按照Hash Code值排序 -
加入元素
set.add(1); set.add('a'); set.add("c"); set.add(true); set.add(null); [null, 1, a, c, true]
-
删除元素
set.remove(1); set.remove(true);
-
获取集合的元素个数
System.out.println(set.size());
-
判断某个元素是否在集合中 返回boolean类型
System.out.println(set.contains(1));
-
清空元素
set.clear();
-
.输出
System.out.println(set);
-
遍历集合
-
第一种方法:使用迭代器遍历集合
Iterator it = set.iterator(); while (it.hasNext()) { System.out.println(it.next()); }
-
第二种方法:for each 迭代
把set集合中每个元素取出来赋值给obj,直到循环set所有值for (Object obj : set) { System.out.println(obj); }
Tree Set
二:TreeSet
集合中元素不重复
TreeSet自然排序 按值大小
-
创建
Set< Integer > set = new TreeSet< Integer >(); //泛型 -
加入元素
set.add(3); set.add(3); set.add(2); set.add(5); System.out.println(set); // TreeSet自然排序 按值大小
-
删除元素
set.remove(1);
-
获取集合的元素个数
System.out.println(set.size());
-
判断某个元素是否在集合中 返回boolean类型
System.out.println(set.contains(1));
-
清空元素
set.clear();
-
.输出
System.out.println(set);
-
遍历集合
for (Integer i : set) { System.out.println(i); }
List集合
Array List
(Array List 线程不安全 和 vector(不怎么用) 线程安全))
List 代表一个元素有序 且可重复的集合 集合中的每个元素都有其对 的顺序索引
允许使用重复的元素 可以通过索引来访问指定位置的集合元素
默认按元素的添加顺序设置元素的索引
list集合里添加了一些根据索引来操作集合元素的方法
-
创建List
List<String> list = new ArrayList<String>();
-
加入元素
list.add("b"); // 第一个索引下标为0 list.add("a"); // 第二个索引下标为1 list.add(" "); list.add("c"); list.add("a");
-
输出List
System.out.println(list)
-
通过索引访问指定位置的集合元素
System.out.println(list.get(0));
-
在指定索引下标的位置上插入元素
list.add(1, "f");
-
根据指定的索引下标移除元素
list.remove(2);
-
通过索引访问指定位置的集合元素
System.out.println(list.get(0));
-
获取指定元素在集合中第一次出现的索引下标
System.out.println(list.indexOf("a"));
-
获取指定元素在集合中最后出现的索引下标
System.out.println(list.lastIndexOf("a"));
-
在集合的指定位置插入集合(类型要相同)
list.addAll(2, l);
-
根据指定的索引下表进行修改元素
list.set(1, “bb”);
-
根据索引下标的起始位置截取一段元素形成一个新的集合
List<String> sublist = list.subList(2, 5); 【2,5)
Map集合
- Map 用于保存具有映射关系的数据,因此 Map 集合里保存着两组值,一组值用于保存 Map 里的 Key,另外一组用于保存 Map 里的 Value
- Map 中的 key 和 value 都可以是任何引用类型的数据
- Map 中的 Key 不允许重复,即同一个 Map 对象的任何两个 Key 通过 equals 方法比较中返回 false
- Key 和 Value 之间存在单向一对一关系,即通过指定的 Key 总能找到唯一的,确定的 Value。
HashMap
HashMap 和 Hashtable 是 Map 接口的两个典型实现类
TreeMap
小结
Java 集合可分为 Set、List 和 Map 三种大体系
Set:无序、不可重复的集合
- Hash Set 无重复元素 按Hashcode排序
- Tree Set 无重复元素 按自然值排序
List:有序,可重复的集合 - ArrayList 可以有重复元素 按添加顺序排序设置索引 根据索引操作方法
== Map:具有映射关系的集合==
上一篇: List、Set、Map集合
下一篇: Java出现OOM错误排查
推荐阅读
-
详解ES6中的 Set Map 数据结构学习总结
-
python 集合 并集、交集 Series list set 转换的实例
-
【转载】C#中List集合使用RemoveRange方法移除指定索引开始的一段元素
-
List/Map 导出到表格(使用注解和反射)
-
20_集合_第20天(Map、可变参数、Collections)_讲义
-
Python—数据类型之集合(Set)
-
python笔记 list tuple dict set
-
Python 集合(Set)、字典(Dictionary)
-
JavaScript之Map和Set_动力节点Java学院整理
-
day07-set集合,深浅拷贝,list删除,字符串join操作