Java教程
- Java - 首页
- Java - 概述
- Java - 历史
- Java - 特性
- Java与C++比较
- JVM - Java虚拟机
- Java - JDK、JRE和JVM的区别
- Java - Hello World程序
- Java - 环境配置
- Java - 基本语法
- Java - 变量类型
- Java - 数据类型
- Java - 类型转换
- Java - Unicode系统
- Java - 基本运算符
- Java - 注释
- Java - 用户输入
- Java - 日期和时间
Java控制语句
- Java - 循环控制
- Java - 决策制定
- Java - if-else语句
- Java - switch语句
- Java - for循环
- Java - for-each循环
- Java - while循环
- Java - do-while循环
- Java - break语句
- Java - continue语句
面向对象编程
- Java - 面向对象编程概念
- Java - 对象和类
- Java - 类属性
- Java - 类方法
- Java - 方法
- Java - 变量作用域
- Java - 构造函数
- Java - 访问修饰符
- Java - 继承
- Java - 聚合
- Java - 多态
- Java - 方法重写
- Java - 方法重载
- Java - 动态绑定
- Java - 静态绑定
- Java - 实例初始化块
- Java - 抽象
- Java - 封装
- Java - 接口
- Java - 包
- Java - 内部类
- Java - 静态类
- Java - 匿名类
- Java - 单例类
- Java - 包装类
- Java - 枚举
- Java - 枚举构造函数
- Java - 枚举字符串
Java内置类
Java文件处理
Java错误和异常
- Java - 异常
- Java - try-catch块
- Java - try-with-resources语句
- Java - 多重catch块
- Java - 嵌套try块
- Java - finally块
- Java - throw异常
- Java - 异常传播
- Java - 内置异常
- Java - 自定义异常
Java多线程
- Java - 多线程
- Java - 线程生命周期
- Java - 创建线程
- Java - 启动线程
- Java - 线程连接
- Java - 线程命名
- Java - 线程调度器
- Java - 线程池
- Java - 主线程
- Java - 线程优先级
- Java - 守护线程
- Java - 线程组
- Java - 关闭钩子
Java同步
Java网络编程
- Java - 网络编程
- Java - Socket编程
- Java - URL处理
- Java - URL类
- Java - URLConnection类
- Java - HttpURLConnection类
- Java - Socket类
- Java - 泛型
Java集合
Java接口
Java数据结构
Java集合算法
高级Java
- Java - 命令行参数
- Java - Lambda表达式
- Java - 发送邮件
- Java - Applet基础
- Java - Javadoc注释
- Java - 自动装箱和拆箱
- Java - 文件不匹配方法
- Java - REPL (JShell)
- Java - 多版本Jar文件
- Java - 私有接口方法
- Java - 内部类菱形运算符
- Java - 多分辨率图像API
- Java - 集合工厂方法
- Java - 模块系统
- Java - Nashorn JavaScript
- Java - Optional类
- Java - 方法引用
- Java - 函数式接口
- Java - 默认方法
- Java - Base64编码解码
- Java - switch表达式
- Java - Teeing收集器
- Java - 微基准测试
- Java - 文本块
- Java - 动态CDS存档
- Java - Z垃圾收集器(ZGC)
- Java - 空指针异常
- Java - 打包工具
- Java - 密封类
- Java - 记录类
- Java - 隐藏类
- Java - 模式匹配
- Java - 简洁的数字格式化
- Java - 垃圾回收
- Java - JIT编译器
Java杂项
- Java - 递归
- Java - 正则表达式
- Java - 序列化
- Java - 字符串
- Java - Process API改进
- Java - Stream API改进
- Java - 增强的@Deprecated注解
- Java - CompletableFuture API改进
- Java - 流
- Java - 日期时间API
- Java 8 - 新特性
- Java 9 - 新特性
- Java 10 - 新特性
- Java 11 - 新特性
- Java 12 - 新特性
- Java 13 - 新特性
- Java 14 - 新特性
- Java 15 - 新特性
- Java 16 - 新特性
Java APIs和框架
Java类参考
- Java - Scanner类
- Java - 数组
- Java - 字符串
- Java - Date类
- Java - ArrayList类
- Java - Vector类
- Java - Stack类
- Java - PriorityQueue类
- Java - LinkedList类
- Java - ArrayDeque类
- Java - HashMap类
- Java - LinkedHashMap类
- Java - WeakHashMap类
- Java - EnumMap类
- Java - TreeMap类
- Java - IdentityHashMap类
- Java - HashSet类
- Java - EnumSet类
- Java - LinkedHashSet类
- Java - TreeSet类
- Java - BitSet类
- Java - Dictionary类
- Java - Hashtable类
- Java - Properties类
- Java - Collection类
- Java - Array类
Java实用资源
Java集合算法
集合框架定义了可以应用于集合和映射的几种算法。
这些算法在Collections类中定义为静态方法。一些方法可能抛出ClassCastException异常(当尝试比较不兼容的类型时发生)或UnsupportedOperationException异常(当尝试修改不可修改的集合时发生)。
集合框架算法中定义的方法总结如下表所示:
序号 | 方法及描述 |
---|---|
1 | static int binarySearch(List list, Object value, Comparator c) 根据c对列表进行排序,然后在列表中搜索value。返回value在列表中的位置,如果未找到则返回-1。 |
2 | static int binarySearch(List list, Object value) 在列表中搜索value。列表必须已排序。返回value在列表中的位置,如果未找到则返回-1。 |
3 | static void copy(List list1, List list2) 将list2的元素复制到list1。 |
4 | static Enumeration enumeration(Collection c) 返回c的枚举。 |
5 | static void fill(List list, Object obj) 将obj赋值给列表的每个元素。 |
6 | static int indexOfSubList(List list, List subList) 在list中搜索subList的第一次出现。返回第一次匹配的索引,如果未找到匹配项则返回-1。 |
7 | static int lastIndexOfSubList(List list, List subList) 在list中搜索subList的最后一次出现。返回最后一次匹配的索引,如果未找到匹配项则返回-1。 |
8 | static ArrayList list(Enumeration enum) 返回包含enum元素的ArrayList。 |
9 | static Object max(Collection c, Comparator comp) 返回c中由comp确定的最大元素。 |
10 | static Object max(Collection c) 返回c中由自然排序确定的最大元素。集合不需要排序。 |
11 | static Object min(Collection c, Comparator comp) 返回c中由comp确定的最小元素。集合不需要排序。 |
12 | static Object min(Collection c) 返回c中由自然排序确定的最小元素。 |
13 | static List nCopies(int num, Object obj) 返回包含num个obj副本的不可变列表。num必须大于或等于零。 |
14 | static boolean replaceAll(List list, Object old, Object new) 将列表中所有出现的old替换为new。如果至少发生一次替换则返回true,否则返回false。 |
15 | static void reverse(List list) 反转list中的序列。 |
16 | static Comparator reverseOrder( ) 返回一个反向比较器。 |
17 | static void rotate(List list, int n) 将list向右旋转n个位置。要向左旋转,请对n使用负值。 |
18 | static void shuffle(List list, Random r) 使用r作为随机数源,对列表中的元素进行洗牌(即随机化)。 |
19 | static void shuffle(List list) 对list中的元素进行洗牌(即随机化)。 |
20 | static Set singleton(Object obj) 将obj作为不可变集合返回。这是将单个对象转换为集合的简单方法。 |
21 | static List singletonList(Object obj) 将obj作为不可变列表返回。这是将单个对象转换为列表的简单方法。 |
22 | static Map singletonMap(Object k, Object v) 将键/值对k/v作为不可变映射返回。这是将单个键/值对转换为映射的简单方法。 |
23 | static void sort(List list, Comparator comp) 根据comp对list的元素进行排序。 |
24 | static void sort(List list) 根据其自然顺序对列表的元素进行排序。 |
25 | static void swap(List list, int idx1, int idx2) 交换列表中由idx1和idx2指定的索引处的元素。 |
26 | static Collection synchronizedCollection(Collection c) 返回由c支持的线程安全集合。 |
27 | static List synchronizedList(List list) 返回由list支持的线程安全列表。 |
28 | static Map synchronizedMap(Map m) 返回由m支持的线程安全映射。 |
29 | static Set synchronizedSet(Set s) 返回由s支持的线程安全集合。 |
30 | static SortedMap synchronizedSortedMap(SortedMap sm) 返回由sm支持的线程安全排序映射。 |
31 | static SortedSet synchronizedSortedSet(SortedSet ss) 返回由ss支持的线程安全排序集合。 |
32 | static Collection unmodifiableCollection(Collection c) 返回由c支持的不可修改集合。 |
33 | static List unmodifiableList(List list) 返回由list支持的不可修改列表。 |
34 | static Map unmodifiableMap(Map m) 返回由m支持的不可修改映射。 |
35 | static Set unmodifiableSet(Set s) 返回由s支持的不可修改集合。 |
36 | static SortedMap unmodifiableSortedMap(SortedMap sm) 返回一个由sm支持的不可修改的有序映射。 |
37 | static SortedSet unmodifiableSortedSet(SortedSet ss) 返回一个由ss支持的不可修改的有序集合。 |
示例 1
以下是一个示例,演示了使用 LinkedList 添加元素并将其元素按逆序排序的各种算法。使用迭代器迭代列表,然后将其洗牌,最后检索并打印最小值和最大值。
import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.LinkedList; import java.util.List; public class AlgorithmsDemo { public static void main(String args[]) { // Create and initialize linked list List<Integer< ll = new LinkedList<<(); ll.add(Integer.valueOf(-8)); ll.add(Integer.valueOf(20)); ll.add(Integer.valueOf(-20)); ll.add(Integer.valueOf(8)); // Create a reverse order comparator Comparator<Integer< r = Collections.reverseOrder(); // Sort list by using the comparator Collections.sort(ll, r); // Get iterator Iterator<Integer< li = ll.iterator(); System.out.print("List sorted in reverse: "); while(li.hasNext()) { System.out.print(li.next() + " "); } System.out.println(); } }
输出
List sorted in reverse: 20 8 -8 -20
示例 2
以下是一个示例,演示了使用 LinkedList 添加元素并将其元素按自然顺序排序的各种算法。使用迭代器迭代列表,然后将其洗牌,最后检索并打印最小值和最大值。
import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.LinkedList; import java.util.List; public class AlgorithmsDemo { public static void main(String args[]) { // Create and initialize linked list List<Integer> ll = new LinkedList<>(); ll.add(Integer.valueOf(-8)); ll.add(Integer.valueOf(20)); ll.add(Integer.valueOf(-20)); ll.add(Integer.valueOf(8)); // Sort list by using the default comparator Collections.sort(ll); // Get iterator Iterator<Integer> li = ll.iterator(); System.out.print("List sorted: "); while(li.hasNext()) { System.out.print(li.next() + " "); } System.out.println(); Collections.shuffle(ll); // display randomized list li = ll.iterator(); System.out.print("List shuffled: "); while(li.hasNext()) { System.out.print(li.next() + " "); } System.out.println(); System.out.println("Minimum: " + Collections.min(ll)); System.out.println("Maximum: " + Collections.max(ll)); } }
输出
List sorted: -20 -8 8 20 List shuffled: -20 -8 20 8 Minimum: -20 Maximum: 20
示例 3
以下是一个示例,演示了使用 LinkedList 添加字符串元素并将其元素按自然顺序排序的各种算法。打印列表,然后将其洗牌,最后检索并打印最小值和最大值。
import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.LinkedList; import java.util.List; public class AlgorithmsDemo { public static void main(String args[]) { // Create and initialize linked list List<String> list = new LinkedList<>(); list.add("Ram"); list.add("Mohan"); list.add("Julie"); list.add("Raheem"); // Sort list by using the default comparator Collections.sort(list); // print the sorted list System.out.println("Sorted List: " + list); // shuffle the list Collections.shuffle(list); // print the shuffled list System.out.println("Shuffled List: " + list); System.out.println("Minimum: " + Collections.min(list)); System.out.println("Maximum: " + Collections.max(list)); } }
输出
Sorted List: [Julie, Mohan, Raheem, Ram] Shuffled List: [Mohan, Raheem, Julie, Ram] Minimum: Julie Maximum: Ram