接口Collection

public interface Collection<E>定义了所有单列集合中共性的方法,所有的单列集合都可以使用共性方法。

Collection的常用子接口有:

  1. public interface List<E> extends Collection<E>

    1. 特点:『有序』、『允许存储重复元素』、『有索引』(可以使用普通的for循环)
    2. 常用实现类有:
      • java.util.ArrayList
      • java.util.LinkedList
  2. public interface Set<E> extends Collection<E>

    1. 特点: 『 无序 』 、 『 不可存储重复元素 』 (不可使用普通for循环)

      更正式地说,集合中不包含e1和e2这样的一对元素,满足e1.equals(e2)

    2. 常用实现类:java.util.HashSet

Collection接口中定义的一些抽象方法:

  1. int size(): 返回此集合中元素的数量
  2. boolean isEmpty(): 如果该集合不包含元素,则返回true,否则返回false
  3. boolean contains(Object o): 如果该集合包含指定的元素,则返回true,否则返回false
  4. Iterator<E> iterator(): 返回该集合中元素的迭代器, 不能保证元素返回的顺序
  5. Object[] toArray(): 返回一个包含此集合中所有元素的数组
  6. boolean add(E e):往集合中添加元素,成功返回true,失败返回false
  7. boolean remove(Object o):从集合中删除指定元素,如果存在的话,返回true,
  8. boolean containsAll(Collection<?> c): 如果该集合包含指定集合中的所有元素,则返回true。
  9. boolean addAll(Collection<? extends E> c):将指定集合中的所有元素添加到此集合
  10. boolean removeAll(Collection<?> c): 删除指定集合中包含的该集合的所有元素
  11. 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类的更多相关文章

  1. JAVA中Collection接口和Map接口的主要实现类

    Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元素 ...

  2. Java基础之Comparable接口, Collections类,Iterator接口,泛型(Generic)

    一.Comparable接口, Collections类 List的常用算法: sort(List); 排序,如果需要对自定义的类进行排序, 那就必须要让其实现Comparable接口, 实现比较两个 ...

  3. java类库 collection与collections (转)

    http://www.cnblogs.com/dashi/p/3597937.html Java中Collection和Collections的区别 1.java.util.Collection 是一 ...

  4. Java基础——collection接口

    一.Collection接口的定义 public interfaceCollection<E>extends iterable<E>  从接口的定义中可以发现,此接口使用了泛型 ...

  5. 『Java』接口的使用方法

    以下三个文件存在于同一个包下: 定义接口Dome_Interface.java: package cn.xxmmqg.Interface; // 接口不能直接使用,必须有一个"实现类&quo ...

  6. Java中Collection和Collections的区别(引用自:http://www.cnblogs.com/dashi/p/3597937.html)

      1.java.util.Collection 是一个集合接口(集合类的一个顶级接口).它提供了对集合对象进行基本操作的通用接口方法.Collection接口在Java 类库中有很多具体的实现.Co ...

  7. Java 集合-Collection接口和迭代器的实现

    2017-10-30 00:30:48 Collection接口 Collection 层次结构 中的根接口.Collection 表示一组对象,这些对象也称为 collection 的元素.一些 c ...

  8. Java中Collection和Collections的区别(转载)

    转载来源:http://www.cnblogs.com/dashi/p/3597937.html 1.java.util.Collection 是一个集合接口(集合类的一个顶级接口).它提供了对集合对 ...

  9. 谈谈Java的Collection接口

    目录 谈谈Collection 前言 Collection 方法 1.boolean add(E) 2.void clear() 3.boolean contains(Object o) 4.bool ...

随机推荐

  1. WebSocket实现前后端通讯

    WebSocket实现前后端通讯 长安如梦里,何日是归期. 简介:我们上线了一个商城项目,移交运营团队使用之后,他们要求商城有新订单来的时候同时加上声音提示,让她们可以及时知道有单来了.我这边想了想, ...

  2. Docker搭建Gogs代码仓库——代码自动化运维部署平台(一)

    一.准备工作 1.Gogs 概念: Gogs 是一款极易搭建的自助 Git 服务. 目的: Gogs 的目标是打造一个最简单.最快速和最轻松的方式搭建自助 Git 服务.使用 Go 语言开发使得 Go ...

  3. PHP递归创建多级目录(一道面试题的解题过程)(转)

      今天看到一道面试题,要写出一个可以创建多级目录的函数: 我的第一个感觉就是用递归创建,具体思路如下: function Directory($dir){ if(is_dir($dir) || @m ...

  4. bugku--cookie欺骗

    打开题目一看,是一串的东西,再看了一下filename发现不对劲了,明显是base64编码,拿去解码一下, 发现是这个,说明是filename,是需要解析的哪个文件名,把index.php编码一下,试 ...

  5. postgresql分组后获取第一条数据

    -- 根据编号分组取第一条数据 select * from table t where t.no=(select max(no) from table t1 where t1.no=t.no) -- ...

  6. Python单元测试框架unittest之批量用例管理(discover)

    前言 我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到unittet里面的discover方法来加载用例了.加载用例后,用unittest里面的TextT ...

  7. Blazor 数据绑定开发指南

    翻译自 Waqas Anwar 2021年3月21日的文章 <A Developer's Guide to Blazor Data Binding> [1] 现如今,大多数 Web 应用程 ...

  8. C语言:case详解

    C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况.例如,输入一个整数,输出该整数对应的星期几的英 ...

  9. C语言:fopen

    fopen,传递文件名参数,w+选项读取用fread或fgets,其中fread是按字节读取,fgets每次读取一个字符串写入用fwrite或fputs或fprintf,fwrite按字节写入,fpu ...

  10. printf函数返回值

    //返回值:正确返回输出的字符总数,错误返回负值,与此同时,输入输出流错误标志将被置值,可由指示器ferror来检查输入输出流的错误标志. #include <stdio.h> #defi ...