目录
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内存储的元素并未发生改变.
相关推荐
提供了20道高难度的Java集合框架面试题及详细答案解析,涵盖了List、Set、Map、Iterator、Collections类等关键概念和操作方法。从数据结构、线程安全性、性能等多个角度深入探讨了集合框架的不同实现和应用场景。...
Java平台提供了一个全新的集合框架,框架的核心为Collection、List(列表)、Set(集合)和Map(映射)。集合类的框架为集合的实现者提供了大量的接口和抽象类,并对其中的某些机制给予了描述,例如,Iterator(迭代...
主要介绍了集合框架(Collections Framework)详解及代码示例,文章涉及集合数组的区别,collection接口,iterator迭代器,list接口及其用法,LinkedHashSet集合等有关内容,具有一定参考价值,需要的朋友可以了解下。
Java类集框架 最大单值操作父接口Collection及其子接口、子类: List接口、ArrayList类、Vector类、栈操作类Stack、链表操作类LinkList、队列操作接口Queue、Set接口、HashSet类、TreeSet类、SortedSet接口 双值操作...
集合框架:★★★★★,用于存储数据的容器。 76 < java.util > Collection接口 77 < java.util >Iterator接口 78 < java.util >List接口 78 < java.util >Set接口 80 < java.util >Map接口 81 把map集合转成set的...
在Java集合框架 是JDK 1.2的一大补充。它添加了许多强大的数据结构,可加速最重要的Java应用程序的开发。从那时起,它已成为Java中集合处理的公认标准。 Commons-Collections通过提供新的接口,实现和实用程序来...
集合框架总览 -、Iterator Iterable ListIterator 二、Map 和 Collection 接口Map 集合体系详解 HashMap LinkedHashMap TreeMap WeakHashMap Hashtable Collection 集合体系详解 Set 接口 AbstractSet 抽象类...
第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java...
一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...
Java集合的快速失败机制 “fail-fast”?什么是迭代器iterator和ListIterator的区别Collection和Collections的区别Comparable和Compartor接口是干什么,列出区别heap 和stack 有什么区别如何确保一个集合不会被修改...
第11章 集合 4课时 理解什么是集合以及Java的集合框架。 辨析List,Set和Map接口。 • 理解List接口,辨别使用List接口的实现类。 • 理解Set接口,辨别使用Set接口的实现类。...
面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...
官方翻译:大小可变数组实现List接口的。 实现了所有可选列表操作,并允许所有元素,包括null。 除了实现List接口,此类提供方法来操作在内部用于存储列表中的阵列的大小。...这个类是成员的Java集合框架
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 10、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 11、HashMap...
第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置...
第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7...
第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java...
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 13、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 14、...
Java范例开发大全(全书源程序),目录如下: 第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境...
Java开发技术大全 电子版 第1篇Java基础知识入门. 第1章Java的开发运行环境2 1.1Java的运行环境与虚拟机2 1.2Java的开发环境4 1.2.1JDK的安装4 1.2.2如何设置系统环境变量6 1.2.3编译命令的使用8 1.2.4解释...