目录
1.Collections常用方法
2.自然排序
3.整体排序
4.Iterator<E>
1.Collections常用方法
addAll(Collection<? super T> c, T... elements) | 将所有指定元素添加到指定collection中 |
reverse(List<?> list) | 反转指定列表中元素的顺序 |
shuffle(List<?> list) | 使用默认随机源对指定列表进行置换 |
sort(List<T> list) | 根据元素的自然顺序对指定列表进行排序 |
sort(List<T> list, Comparator<? super T> c) | 根据指定比较器对指定列表进行排序 |
2.自然排序
Collections提供两种排序方法,自然排序和整体排序.自然排序方法要求list中的元素实现Comparable<T>接口以实现可比较.Comparable中提供唯一的方法compareTo(T o),比较此对象与指定对象的顺序:如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数.此方法需要与equals方法保持一致性.
public class CollectionsDemo2 { public static void main(String[] args) { ArrayList<Integer> list1 = new ArrayList<>(); Collections.addAll(list1, 2, 4, 6, 8, 0, 1, 23, 45); Collections.sort(list1); System.out.println(list1); } }
运行结果:[0, 1, 2, 4, 6, 8, 23, 45]
public class CollectionsDemo2 { public static void main(String[] args) { ArrayList<Person> list2 = new ArrayList<>(); Person[] people = { new Person("zhangsan"), new Person("lisi"), new Person("wanglaowu") }; Collections.addAll(list2, people); Collections.sort(list2); System.out.println(list2); } } class Person implements Comparable<Person> { String name; public Person(String name) { this.name = name; } // 根据名字排序 @Override public int compareTo(Person p) { return this.name.compareTo(p.name); } @Override public String toString() { return name; } }
运行结果:[lisi, wanglaowu, zhangsan]
3.整体排序
整体排序方法要求在sort方法中传入一个Comparator<T>的参数.Comparator中提供的比较方法是compare(T o1, T o2):根据第一个参数小于、等于或大于第二个参数,分别返回负整数、零或正整数.此方法需要与equals方法保持一致性.
public class CollectionsDemo3 { public static void main(String[] args) { ArrayList<Person> list3 = new ArrayList<>(); Person[] people = { new Person("zhangsan", 40), new Person("lisi", 25), new Person("wanglaowu", 32), new Person("kobe", 25), new Person("james", 40) }; Collections.addAll(list3, people); // 通过匿名内部类实现对Person的比较 Collections.sort(list3, new Comparator<Person>() { // 按年龄从小到大,年龄相同的按名字排序 public int compare(Person p1, Person p2) { int rtv = 0; if ((rtv = p1.age - p2.age) == 0) { rtv = p1.name.compareTo(p2.name); } return rtv; } }); System.out.println(list3); } } class Person { String name; int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return age + ":" + name; } }
运行结果:[25:kobe, 25:lisi, 32:wanglaowu, 40:james, 40:zhangsan]
4.Iterator<E>
1)常用方法
hasNext() | 判断是否仍有元素可以迭代 |
next() | 返回迭代的下一个元素 |
remove() | 从集合中移除迭代器返回的最后一个元素 |
forEachRemaining() | 对未进行迭代的元素执行一个action(1.8新增) |
2)筛选元素
public class IteratorDemo { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); Collections.addAll(list, 95, 34, 67, 89, 23, 79, 66, 12, 98); Iterator<Integer> car = list.iterator(); while (car.hasNext()) { int value = car.next(); if (value < 60) { car.remove(); } } System.out.println(list); } }
运行结果:[95, 67, 89, 79, 66, 98]
3)forEachRemaining()
对于forEachRemaining()方法,迭代器会对集合中所有未进行迭代的元素进行迭代,相当于利用for each循环语句.在执行此方法时,不能调用remove()方法对当前collection的元素进行删除,同时,执行此方法后,hasNext()的返回值应该为false.
public class IteratorDemo { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); Collections.addAll(list, 95, 34, 67, 89, 23, 79, 66, 12, 98); Iterator<Integer> car = list.iterator(); // 利用lambda表达式实现Consumer car.forEachRemaining((value) -> { if (value > 60) { // car.remove();//抛出异常 System.out.println(value); } }); System.out.println(car.hasNext()); } }
运行结果:
95
67
89
79
66
98
false
注意,我们只是打印时忽略了小于60的分数,而list内存储的元素并未发生改变.
相关推荐
Java集合框架是Java编程语言中不可或缺的一部分,它提供了一组接口和类,用于高效地存储、管理和操作对象。本文将深入探讨Java集合框架的核心概念,包括List、Set、Map等接口,以及ArrayList、LinkedList、HashSet、...
《Data Structures and the Java Collections Framework》这本书可能涵盖了如何有效地使用各种数据结构,如何根据需求选择合适的Java集合框架实现,以及如何通过这些工具解决实际问题。此外,它可能还会讨论并发编程...
Java集合框架是Java编程语言中一个至关重要的组成部分,它提供了数据结构和算法的抽象,使得开发者可以方便地存储和管理各种类型的数据。本篇将详细探讨Java集合框架的基础知识,包括核心接口、类的层级结构以及Java...
根据提供的文档内容,文件是关于Java集合框架的面试题知识点总结。以下是Java集合框架的知识点详述: Java集合框架主要包括Collection接口和Map接口两大分支。Collection接口主要包括List、Set以及Queue三个子接口...
Java集合框架是Java编程语言中一个非常重要的组成部分,它提供了一组高效的数据结构和操作这些数据结构的方法。泛型则是Java在J2SE 5.0版本引入的一个特性,极大地提高了代码的类型安全性和可读性。下面我们将深入...
Java集合框架还包括一些实用工具类,如`Collections`(提供集合操作的静态方法)、`Iterator`(遍历集合的迭代器)和`EnumSet`(专为枚举类型设计的高效集合)。 5. **泛型**:Java集合框架广泛使用泛型,以确保...
Java集合框架还包括一些高级特性,如`Collections`工具类、`Iterator`接口、`Iterable`接口和`Comparator`接口。 - **Collections**:提供了大量的静态方法来操作集合,例如排序、洗牌等。 - **Iterator**:提供了...
Java 集合框架概述 Java 集合框架是 Java 语言中提供的一种统一的标准体系结构,用于表示和操作集合。集合框架包含三大块内容:对外的接口、接口的实现和对集合运算的算法。 1. 接口:Collection 顶层接口是集合...
Java集合框架是Java编程语言中不可或缺的一部分,它提供了一组接口和类,用于高效地存储、管理和操作数据。本篇文章将深入探讨Java集合框架的各个方面,帮助开发者从基础到高级全面掌握这一关键知识。 首先,我们要...
### Java集合框架使用总结 #### 前言 本文旨在为读者提供关于Java集合框架的概览性介绍,帮助理解其整体架构与设计理念。对于希望深入掌握特定接口或类使用方法的学习者,建议查阅官方提供的Java API文档。 #### ...
Java集合框架是Java编程语言中的一个核心组件,它为开发者提供了高效、灵活的数据结构和算法。这个框架使得处理对象集合变得更加简单,同时也提高了代码的可读性和可维护性。以下是对Java集合框架的详细说明: 1. *...
Java集合框架是Java编程语言中一个非常重要的组成部分,它为开发者提供了存储和管理对象的统一方式。这个框架包括了一系列接口、抽象类以及实现类,帮助程序员处理各种数据结构,如列表、集合、映射等。 首先,我们...
Java集合框架是Java编程语言中一个至关重要的部分,它为数据存储和操作提供了丰富的类库。这个PPT作为培训教材,旨在深入解析Java集合框架的核心概念、接口和类,帮助学习者掌握其基本使用和高级特性。以下是Java...
Java集合框架是Java编程语言中不可或缺的一部分,它提供了一种高效、灵活的方式来存储和操作数据。这个"深入理解Java集合框架.zip"文件很可能是包含了一系列关于Java集合框架的详细资料,比如源码分析、设计模式以及...
除了这些核心的集合类和接口,Java集合框架还包括了迭代器(Iterator)接口,它允许遍历集合中的元素。迭代器提供了一个统一的遍历集合的方式,可以用来逐个访问集合中的元素,而不必关心集合的具体实现。 在Java...
"Java集合框架面试题" Java 集合框架是 Java 语言中的一组预定义类和接口的集合,用于存储和操作数据。下面是 Java 集合框架的知识点总结: 1. Java 集合类主要有两大分支:Collection 接口和 Map 接口。...
Java集合框架还提供了一些工具类,如Collections和Arrays,它们提供了排序、复制、填充等静态方法,帮助开发者更便捷地操作集合。例如,Collections.sort()可以对List进行排序,Arrays.asList()可以把数组转换为List...
Java集合框架是Java编程语言中不可或缺的一部分,它提供了一种高效、灵活的方式来存储和操作数据。这个框架包括了各种接口和类,它们为开发者提供了多种数据结构,如数组、链表、队列、堆栈、映射等。下面将详细探讨...
### Java集合框架总结 在Java编程中,集合框架(Collections Framework)是处理数据的重要工具集,它提供了一系列接口和类来存储、操作和检索不同类型的元素。本文将深入解析Java集合框架的关键知识点,涵盖其核心...
迭代器(Iterator)是Java集合框架中遍历元素的主要方式,提供了`hasNext()`和`next()`方法来依次访问集合中的元素,同时支持`remove()`方法移除当前元素。 5. **迭代器与foreach循环** Java 5引入的增强for循环...