『Java』Collection接口 Collections类
接口Collection
public interface Collection<E>
定义了所有单列集合中共性的方法,所有的单列集合都可以使用共性方法。
Collection的常用子接口有:
public interface List<E> extends Collection<E>
:- 特点:『有序』、『允许存储重复元素』、『有索引』(可以使用普通的for循环)
- 常用实现类有:
java.util.ArrayList
java.util.LinkedList
public interface Set<E> extends Collection<E>
:特点: 『 无序 』 、 『 不可存储重复元素 』 (不可使用普通for循环)
更正式地说,集合中不包含e1和e2这样的一对元素,满足e1.equals(e2)
常用实现类:
java.util.HashSet
Collection接口中定义的一些抽象方法:
int size()
: 返回此集合中元素的数量boolean isEmpty()
: 如果该集合不包含元素,则返回true,否则返回falseboolean contains(Object o)
: 如果该集合包含指定的元素,则返回true,否则返回falseIterator<E> iterator()
: 返回该集合中元素的迭代器, 不能保证元素返回的顺序Object[] toArray()
: 返回一个包含此集合中所有元素的数组boolean add(E e)
:往集合中添加元素,成功返回true,失败返回falseboolean remove(Object o)
:从集合中删除指定元素,如果存在的话,返回true,boolean containsAll(Collection<?> c)
: 如果该集合包含指定集合中的所有元素,则返回true。boolean addAll(Collection<? extends E> c)
:将指定集合中的所有元素添加到此集合boolean removeAll(Collection<?> c)
: 删除指定集合中包含的该集合的所有元素void clear()
: 从集合中删除所有元素
类Collections
public class Collections extends Object
该【类】专门由操作或返回集合的静态方法组成。
Collections中定义的静态常量
public static final List EMPTY_LIST = new EmptyList<>();
public static final Map EMPTY_MAP = new EmptyMap<>();
public static final Set EMPTY_SET = new EmptySet<>();
Collections中定义的静态方法
代码中的注释中被【】
括起来的内容是对应的输出结果。
import java.util.ArrayList;
import java.util.Collections;
public class CLASS1 {
public static void main(String[] args) {
ArrayList<Integer> arr = new ArrayList<>();
// ===========addAll(Collection c, T... elements)===========
Collections.addAll(arr, 3, 1, 5, 4, 2); // 往指定集合中添加元素,第二个参数是一个可变参数
System.out.println(arr); // 【[3, 1, 5, 4, 2]】
// ===========sort(List)===========
Collections.sort(arr); // 默认升序排列
System.out.println(arr); // 【[1, 2, 3, 4, 5]】
// ===========sort(List, Comparator)=========
Collections.sort(arr, ((o1, o2) -> o2 - o1)); // 通过实现Comparator接口实现降序排列
System.out.println(arr); // 【[5, 4, 3, 2, 1]】
// ===========binarySearch(List, key)===========
int ind = Collections.binarySearch(arr, 2);
System.out.println(ind); // arr目前是降序排列,而二分查找默认是按照升序排列进行的,所以找不到,返回【-1】
// ===========binarySearch(List, key, Comparator)===========
ind = Collections.binarySearch(arr, 2, (o1, o2) -> o2 - o1);
System.out.println(ind); // 降序排列使用二分查找,返回索引值【3】,索引从0开始
// ===========reverse(List)===========
Collections.reverse(arr); // 反转List
System.out.println(arr); // 【[1, 2, 3, 4, 5]】
// ===========max(List) & min(List)===========
System.out.println(Collections.max(arr)); // 【5】
System.out.println(Collections.min(arr)); // 【1】
// ===========shuffle(List)===========
Collections.shuffle(arr); // 打乱集合中的元素排列顺序
System.out.println((arr)); // 【[2, 4, 3, 1, 5]】
}
}
『Java』Collection接口 Collections类的更多相关文章
- JAVA中Collection接口和Map接口的主要实现类
Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元素 ...
- Java基础之Comparable接口, Collections类,Iterator接口,泛型(Generic)
一.Comparable接口, Collections类 List的常用算法: sort(List); 排序,如果需要对自定义的类进行排序, 那就必须要让其实现Comparable接口, 实现比较两个 ...
- java类库 collection与collections (转)
http://www.cnblogs.com/dashi/p/3597937.html Java中Collection和Collections的区别 1.java.util.Collection 是一 ...
- Java基础——collection接口
一.Collection接口的定义 public interfaceCollection<E>extends iterable<E> 从接口的定义中可以发现,此接口使用了泛型 ...
- 『Java』接口的使用方法
以下三个文件存在于同一个包下: 定义接口Dome_Interface.java: package cn.xxmmqg.Interface; // 接口不能直接使用,必须有一个"实现类&quo ...
- Java中Collection和Collections的区别(引用自:http://www.cnblogs.com/dashi/p/3597937.html)
1.java.util.Collection 是一个集合接口(集合类的一个顶级接口).它提供了对集合对象进行基本操作的通用接口方法.Collection接口在Java 类库中有很多具体的实现.Co ...
- Java 集合-Collection接口和迭代器的实现
2017-10-30 00:30:48 Collection接口 Collection 层次结构 中的根接口.Collection 表示一组对象,这些对象也称为 collection 的元素.一些 c ...
- Java中Collection和Collections的区别(转载)
转载来源:http://www.cnblogs.com/dashi/p/3597937.html 1.java.util.Collection 是一个集合接口(集合类的一个顶级接口).它提供了对集合对 ...
- 谈谈Java的Collection接口
目录 谈谈Collection 前言 Collection 方法 1.boolean add(E) 2.void clear() 3.boolean contains(Object o) 4.bool ...
随机推荐
- 17、ansible配置管理
17.1.前言: 1.说明: ansible是自动化运维工具,基于Python开发,实现了批量系统配置.批量程序部署.批量运行命令等功能. ansible是基于模块工作的,本身没有批量部署的能力,真正 ...
- Vue 消除Token过期时刷新页面的重复提示
1.问题现象 页面长时间未操作,再刷新页面时,第一次弹出"token失效,请重新登录!"提示,然后跳转到登录页面,接下来又弹出了n个"Token已过期"的后 ...
- 18.自动运维工具ansible
1 Ansible 介绍和架构 1.1 Ansible介绍 ansible 的名称来自科幻小说<安德的游戏>中跨越时空的即时通信工具,使用它可以在相距数光年的 距离,远程实时控制前线的舰队 ...
- Kubernetes全栈架构师(Kubeadm高可用安装k8s集群)--学习笔记
目录 k8s高可用架构解析 Kubeadm基本环境配置 Kubeadm系统及内核升级 Kubeadm基本组件安装 Kubeadm高可用组件安装 Kubeadm集群初始化 高可用Master及Token ...
- Docker安装单点RabbitMQ
环境准备 Centos 7.5 docker环境 安装步骤 拉取镜像 $ docker pull rabbitmq:management 说明: 获取rabbiymq镜像的时候要记得获取managem ...
- 黑马c++基础的一个通讯录系统
前言: 代码写的挺简单的,更像是c语言的课设,然后没有持久化的东西,之前也写过一个类似的,不过我写的纯c语言大概有1700多行,把信息全用文件存起来了, 所以如果要写完整的话,最好还是用数据库或者文件 ...
- 从三道题目入门frida
偶然从看雪看到了一篇入门frida的题目,正好苦于没练手的东西,直接上手一波 1.第一题jadx打开,也没有壳和混淆,整体非常清晰,判断的逻辑也很简单 发现其实就是两个输入框,一个用户名一个密码,先拼 ...
- Java初级面试题整理
先看再点赞,给自己一点思考的时间,如果对自己有帮助,微信搜索[程序职场]关注这个执着的职场程序员. 我有什么:职场规划指导,技能提升方法,讲不完的职场故事,个人成长经验. 1. Java语言有哪些特点 ...
- Java | 集合(Collection)和迭代器(Iterator)
集合(Collection) 集合就是Java中提供的一种 空器,可以用来存储多个数据. 集合和数组都是一个容器,它们有什么区别呢? 数组的长度是固定的,集合的长度是可变的. 数组中存储的是同一类型的 ...
- 卧槽,原来不需要FQ就可以构建海外镜像
一. 背景 使用docker或者k8s的过程中,我们可能遇到镜像无法下载的情况,例如:kubernetes的kube-apiserver镜像,这是因为其仓库在海外,我们的网络被墙,我发获取到该资源,使 ...