集合(一)——认识集合
目录
- 集合的基本概念
- 一、Collection接口
- 二、Map接口:
- 三个遍历方法(用迭代器):
- 三、Collection和Collections的区别:
- 四、具体的集合有哪些:
集合的基本概念
集合类和数组相比有许多不同之处,比如,数组的长度是不可变的,而集合的长度是可变的(集合基于数组或链表,集合的数组会扩容,链表就不用说了);并且集合只能存储引用数据类型的数据,不能存放基本数据类型的数据;数组创建要指定大小,集合不需要。
Java中的集合类主要有两个派生接口,即Collection和Map。其中,Collection接口派生出了List集合和Set集合,各个接口还提供了不同的实现类:
一、Collection接口
java.util.Collection是集合类的基本接口,存储单个值,它位于集合类的顶层,接口定义如下:
public interface Collection<E> extends Iterable<E>
Collection接口的方法定义:
方法名 | 作用 |
---|---|
add(E o) | 向集合插入元素 |
addAll(Collection<? extends E c) | 向集合中添加一个集合 |
clear() | 清除集合中的所有元素 |
contains(Object o) | 判断集合中是否存在指定的元素,存在,返回true |
containsAll(Collection<? extends E> c) | 判断集合中是否存在指定的集合,存在,返回true |
equals(Object o) | 判断两个集合是否相等 |
hashCode() | 返回此collection的哈希码值 |
isEmpty() | 判断此集合是否为空 若为空,返回true |
iterator() | 为Iterator接口的实例化,用于遍历集合中的元素 |
remove(Object o) | 从集合中删除指定元素 |
remove(Collection<?> c) | 从集合中删除指定集合 |
retainAll(Collection<?> c) | 保存集合中所有在集合c中出现的元素,求交集的 |
size() | 返回此集合中元素的个数 |
toArray() | 返回包含此元素中所有元素的对象数组 |
toArray(T[] a) | 返回包含此元素中所有元素的对象数组,并可以指定返回的数组类型 |
List 以特定次序来持有元素,可有重复元素。即,有序可重复。
Set 无法拥有重复元素,内部排序。即,无序不可重复。
Map 保存 key-value 值,一一映射。
二、Map接口:
Map是一个独立的接口,Map集合中的key不允许重复,每一个key只能映射一个value。
public interface Map<K,V>
常用方法:
方法名 | 作用 |
---|---|
int size() | map中存储键值对的个数 |
boolean isEmpty() | 判断是否为空 |
boolean containsKey(Object key) | 判断键是否存在 |
boolean containsValue(Object value) | 判断值是否存在 |
put(K key,V value) | 向此Map集合中添加新的元素 |
putAll(Map<? extends K, ? extends V> m) | 将map集合添加到当前集合 |
V get(Object key) | 通过键获取值的方法 |
V remove(Object key) | 通过键删除元素 |
clear() | 删除此集合中的所有key和value |
三个遍历方法(用迭代器):
1、entrySet()通过键值对遍历:
用法:
Iterator<Map.Entry<Integer, Integer>> iterator = hashMap.entrySet().iterator();
先将HashMap转换为Set实例(类型:Map.Entry<>),entrySet()返回一个Set<Map.Entry<K,V>>;
注意:通过Map接口下的entrySet()方法将键值对转换为单个值(最终转换为Set集合);
2、keySet()通过键来遍历:
用法:
Iterator<Integer> iterator = hashMap.keySet().iterator();
仅仅是对键进行访问,keySet()返回一个Set;
3、values()通过值来遍历:
用法:
Iterator<Integer> iterator = hashMap.values().iterator();
仅仅是对值进行访问,values()返回一个Collection;
4、Map.Entry接口
public static interface Map.Entry<K,V>
Map.Entry接口的常用方法:
方法名 | 作用 |
---|---|
equals(Object o) | 比较指定的对象o与此Entry对象是否相等 |
getKey() | 获取此Entry中包含的key值 |
getValue() | 获取此Entry中包含的value值 |
setValue(V value) | 设置此Entry中的value值 |
hashCode() | 返回此Entry的哈希码值 |
三、Collection和Collections的区别:
Collection 是 java.util 下的接口,它是各种集合的父接口,继承于它的接口主要有 Set 和 List;
Collections 是个 java.util 下的类,是针对集合的帮助类,Collections中提供了一系列的静态方法例如排序、查找、反转、替换、取最小元素、线程安全化等等,其中大多数方法都用来处理线性表,它就像一个工具类,是给Collection接口打辅助的。
四、具体的集合有哪些:
集合类型 描述
ArrayList 一种可以动态增长和缩减的索引序列
LinkedList 一种可以在任意位置进行高效地删除操作或插入操作的有序序列
HashSet 一种没有重复元素的无序集合
TreeSet 一种有序集
EnumSet 一种包含枚举类型值的集
LinkedHashSet 一种可以记住元素插入次序的集
PriorityQueue 一种允许高效删除最小元素的集合
HashMap 一种储存键——值关联的数据结构
TreeMap 一种键——值有序排列的映射表
LinkedHashMap 一种可以记住键——值项添加顺序的映射表
WeakHashMap 一种其值无用武之地后可以被垃圾回收器回收的映射表
集合(一)——认识集合相关推荐
- java 集合 接口_Java集合之Collection接口
1 - Java集合介绍 /* 1. 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象 的操作,就要对对象进行存储. 2. 另一方面,使用Array存储对象方面具有一些弊 端,而 ...
- Java集合学习_Java集合学习(适合新手)
集合框架 由⼀组类和接⼝组成的⼀个体系. Collection 集合框架 最基本的接⼝,⼀个 Collection 可以存储⼀组⽆序.不唯⼀的对象,实际开发中不会直接使⽤ Collection 进⾏开 ...
- 【Groovy】集合遍历 ( 使用集合的 findAll 方法查找集合中符合匹配条件的所有元素 | 代码示例 )
文章目录 一.使用集合的 findAll 方法查找集合中符合匹配条件的所有元素 1.闭包中使用 == 作为 findAll 方法的查找匹配条件 2.闭包中使用 is 作为 findAll 方法的查找匹 ...
- 【Groovy】集合遍历 ( 使用集合的 collect 循环遍历集合并根据指定闭包规则生成新集合 | 代码示例 )
文章目录 一.使用集合的 collect 循环遍历集合并根据指定闭包规则生成新集合 二.代码示例 一.使用集合的 collect 循环遍历集合并根据指定闭包规则生成新集合 调用集合的 collect ...
- 【Java 集合】Java 集合的线程安全性 ( 加锁同步 | java.utils 集合 | 集合属性 | java.util.concurrent 集合 | CopyOnWrite 机制 )
文章目录 I . Java 集合的线程安全概念 ( 加锁同步 ) II . 线程不安全集合 ( 没有并发需求 推荐使用 ) III . 集合属性说明 IV . 早期的线程安全集合 ( 不推荐使用 ) ...
- 数据集合 oracle,oracle集合
oracle集合 1初识集合 集合是oracle中的一种数据类型 存放一组数据类型相同的数据 集合组成 由下标和值组成 下标的类型包含数字(整数,pls_integer,binary_integer) ...
- python集合类型_python集合类型介绍
我们在学习数学的时候学过集合这个概念,在Python中同样存在一种名叫集合的数据类型,它也是用来保存不重复的元素,简单的说,集合就是包含了一些唯一存在的元素. 元素有以下几个特性: 1) 无序性,集合 ...
- Python--set集合讲解; 什么是集合?创建一个集合;集合的操作函数;
什么是集合? 创建一个集合 第一种方式: set={"1","2"} 第二种方式 list = ['1','2'] set1 = set(list) 集合的操作 ...
- 并发集合和普通集合以及安全集合的区别
并发集合和普通集合以及安全集合的区别 在 java 中有普通集合.同步(线程安全)的集合.并发集合.并发集合常见的有 ConcurrentHashMap.ConcurrentLinkedQueue.C ...
- Java中的同步集合与并发集合有什么区别?
同步集合与并发集合都为多线程和并发提供了合适的线程安全的集合,不过并发集合的可扩展性更高. 在Java1.5之前程序员们只有同步集合来用且在多线程并发的时候会导致争用,阻碍了系统的扩展性.Java5介 ...
最新文章
- vue中的时间过滤器
- 查看服务器上读的是哪个配置文件
- 【DBMS 数据库管理系统】OLTP 联机事务处理 与 OLAP 联机分析处理 ( 数据仓库 与 OLAP | OLAP 联机分析处理 | OLTP 与 OLAP 区别 )
- 分布式事务最终一致性常用方案
- SpringMVC请求参数乱码问题
- Pentium II Pentium III架构/微架构/流水线 (3) - P6执行核详解 (指令时延吞吐量,执行单元/发射口)
- 如何在android上嵌入mupdf作为pdf阅读器
- 服务器如何设置内网IP地址
- 从GTK、GLib到GObject与GType历史梳理
- word如何添加下滑线
- 串口工具Kermit
- 手机、浏览器的分辨率、状态栏参数
- 实现html页面的倒计时
- 《嵌入式 - 嵌入式大杂烩》PNP与NPN三极管的原理与使用方法
- 苹果亮度突然变暗_安卓手机体验真的超越苹果了吗?至少这一点上,iPhone还是领先...
- 用碎玻璃“洗脸”的奇人
- 没NFC功能的手机如何能刷公交卡
- NB-IoT的低功耗特性原理解说
- Java帝国之宫廷内斗2(分布式事务消息队列、事务表)
- 小白都能看懂的实战教程 手把手教你Python Web全栈开发(DAY 1)