Collections (java.util.Collections) 工具类包含了很多有关集合操作的静态方法,使用这些方法能帮我们简化代码。
本文将整理Collections工具类的一些基本方法。
1. 获取List中的最小值
List<Integer> intList = Arrays.asList(33, 24, 18, 6, 9, 99); // 6 System.out.println(java.util.Collections.min(intList));
2. 获取List中的最大值
List<Integer> intList = Arrays.asList(33, 24, 18, 6, 9, 99); // 99 System.out.println(java.util.Collections.max(intList));
3. Shuffle
Shuffle方法可以使一个集合的元素乱序化。比如,一副牌的集合为cardList (类型List<Card>), 使用Collections.shuffle(cardList)就能使一副牌处于乱序,达到洗牌的目的。
List<Integer> intList = Arrays.asList(33, 24, 18, 6, 9, 99); Collections.shuffle(intList); // 一次测试的结果 // [6, 18, 33, 24, 99, 9] System.out.println(intList);
4. nCopies
该方法用于返回一个不可变列表组成的n个拷贝的指定对象。
// 生成一个由10个100组成的整数列表 List<Integer> nCopiesList = Collections.nCopies(10, 100); //[100, 100, 100, 100, 100, 100, 100, 100, 100, 100] System.out.println(nCopiesList);
5. sort
该方法用于对集合排序。
List<Integer> intList = Arrays.asList(33, 24, 18, 6, 9, 99); Collections.sort(intList);
上述例子没有包含Comparator参数,。我们也可以结合Comparator对对象集合进行排序。 比如对存放Person类的对象集按照年龄进行排序。
package com.thecodesmaple.example.collection; public class Person { private int age; private String firstName; private String lastName; public Person(int age, String firstName, String lastName) { this.age = age; this.firstName = firstName; this.lastName = lastName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String toString() { return "Age: " + age + " FirstName " + firstName + " LastName: " + lastName; } }
List<Person> personList = Arrays.asList(new Person(21, "Eric", "W"), new Person(17, "John", "A"), new Person(28, "Allan", "H"), new Person(15, "Jonas", "B")); // [Age: 21 FirstName Eric LastName: W, Age: 17 FirstName John LastName: // A, Age: 28 FirstName Allan LastName: H, Age: 15 FirstName Jonas // LastName: B] System.out.println(personList); Collections.sort(personList, new Comparator<Person>() { @Override public int compare(Person p1, Person p2) { return p1.getAge() - p2.getAge(); } }); // [Age: 15 FirstName Jonas LastName: B, Age: 17 FirstName John // LastName: A, Age: 21 FirstName Eric LastName: W, Age: 28 FirstName // Allan LastName: H] System.out.println("按照年龄排序后:"); System.out.println(personList);
6. binarySearch
List<Integer> intList = Arrays.asList(33, 24, 18, 6, 9, 99); // 2 System.out.println(Collections.binarySearch(intList, 18));
7. copy 用两个参数,一个目标 List 和一个源 List, 将源的元素拷贝到目标,并覆盖它的内容。目标 List至少与源一样长。 List<String> listOne = Arrays.asList("A", "B", "C", "D");
List<String> listTwo = Arrays.asList("X", "Y", "Z");
Collections.copy(listOne, listTwo);
System.out.println(listOne);// [X, Y, Z, D]
System.out.println(listTwo);//[X, Y, Z]
List<Person> personList = Arrays.asList(new Person(21, "Eric", "W"),
new Person(17, "John", "A"), new Person(28, "Allan", "H"),
new Person(15, "Jonas", "B"));
// [Age: 21 FirstName Eric LastName: W, Age: 17 FirstName John LastName:
// A, Age: 28 FirstName Allan LastName: H, Age: 15 FirstName Jonas
// LastName: B]
System.out.println(personList);
Collections.sort(personList, new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
return p1.getAge() - p2.getAge();
}
});
// [Age: 15 FirstName Jonas LastName: B, Age: 17 FirstName John
// LastName: A, Age: 21 FirstName Eric LastName: W, Age: 28 FirstName
// Allan LastName: H]
System.out.println("按照年龄排序后:");
System.out.println(personList);
8. disJoint
用于检查两个集合有无相同的元素,如果没有则返回true。
List<String> list3 = Arrays.asList("A", "B", "C", "D"); List<String> list4 = Arrays.asList("X", "Y", "Z"); boolean disJoint = Collections.disjoint(list3, list4); // true System.out.println(disJoint);
9. fill 使用指定元素替换指定列表中的所有元素
List<String> testList = Arrays.asList("A", "B", "C", "D"); Collections.fill(testList, "Z"); // [Z, Z, Z, Z] System.out.println(testList);
10. frequency 获取某个元素在集合中出现的次数。
List<String> testList = Arrays.asList("A", "B", "C", "D"); int freq = Collections.frequency(testList, "A"); // 1 System.out.println(freq);
11. indexOfSubList 返回指定源列表中第一次出现指定目标列表的起始位置
int index = Collections.indexOfSubList(Arrays.asList("A", "B", "C"), Arrays.asList("B")); // Print 1 System.out.println(index);
12. lastIndexOfSubList 返回指定源列表中最后一次出现指定目标列表的起始位置
int lastIndex = Collections.lastIndexOfSubList( Arrays.asList("A", "B", "C", "B"), Arrays.asList("B")); // Print 3 System.out.println(lastIndex);
13. emptyXXX 请参考之前的文章 http://thecodesample.com/?p=80 |
14. checkedXXX
List<String> stringList = Arrays.asList("A", "B", "C", "D");
List<String> typeSafeList = Collections.checkedList(stringList, String.class);
//[A, B, C, D]
System.out.println(typeSafeList);
15. reverse
反转列表中的元素顺序。
List<String> reverseCandidate = Arrays.asList("A", "B", "C");
Collections.reverse(reverseCandidate);
// [C, B, A]
System.out.println(reverseCandidate);
16. replaceAll
List<String> replaceAllCandidate = Arrays.asList("A", "B", "C");
// 将A用Z代替
Collections.replaceAll(replaceAllCandidate, "A", "Z");
// [Z, B, C]
System.out.println(replaceAllCandidate);
17. swap
指定一个目标集合以及两个元素的索引,交换这两个指定位置元素的值。
List<String> swapCandidate = Arrays.asList("A", "B", "C");
// 首尾元素交换
Collections.swap(swapCandidate, 0, 2);
// [C, B, A]
System.out.println(swapCandidate);
18. synchronizedXXX
Collection<String> c = Collections
.synchronizedCollection(new ArrayList<String>());
List<String> list = Collections
.synchronizedList(new ArrayList<String>());
Set<String> set = Collections.synchronizedSet(new HashSet<String>());
Map<String, String> m = Collections
.synchronizedMap(new HashMap<String, String>());
19. unmodifiableXXX
List<String> unmodifiableList = Collections.unmodifiableList(Arrays
.asList("A", "B", "C"));
unmodifiableList.add("D");//此动作会抛异常
// Exception in thread "main" java.lang.UnsupportedOperationException
// at java.util.Collections$UnmodifiableCollection.add(Unknown Source)
// at
// com.thecodesmaple.example.collection.CollectionsExample.main(CollectionsExample.java:149)
20. singletonXXX
String init[] = { "One", "Two", "Three", "One", "Two", "Three" };
List list1 = new ArrayList(Arrays.asList(init));
List list2 = new ArrayList(Arrays.asList(init));
list1.remove("One");
// [Two, Three, One, Two, Three]
System.out.println(list1);
// [Two, Three, Two, Three]
list2.removeAll(Collections.singleton("One"));
System.out.println(list2);
21. rotate
根据指定的距离循环移动指定列表中的元素
List<String> rotateList = Arrays.asList("A", "B", "C", "D", "E", "F");
// [F, A, B, C, D, E]
// Collections.rotate(rotateList, 1);
// System.out.println(rotateList);
Collections.rotate(rotateList, 3);
// [D, E, F, A, B, C]
System.out.println(rotateList);
22. reverseOrder
List<String> reverseOrderTest = Arrays.asList("A", "B", "C", "D", "E",
"F");
Comparator c = Collections.reverseOrder();
Collections.sort(reverseOrderTest, c);
// [F, E, D, C, B, A]
System.out.println(reverseOrderTest);
本文转自http://thecodesample.com/?p=122
更多程序实例请访问http://thecodesample.com/
相关推荐
Java Collections框架是Java编程语言中用于管理集合的重要组成部分,它提供了对对象集合的高效操作和组织方式。在Java中,集合主要用于存储一组对象,而数组虽然也能存储对象,但其长度固定,不适合处理动态变化的...
在实际应用中,我们可以使用这些方法来对List集合进行排序和操作。例如: ```java public void testSort() { System.out.println("原始顺序:" + list); Collections.reverse(list); System.out.println(...
这意味着无论是处理数组还是对象,开发者都可以使用相似的方法进行操作,无需关心数据结构的差异。然而,Collections并不支持Map和Set这两种ES6引入的集合类型。 `map`和`filter`是Collections中两个基础且常用的...
8. **实用工具类**:Java.util.*包包含许多实用工具类,如Arrays、Collections、Date、Calendar、Random等,它们提供了大量静态方法,简化了常见任务的实现。 在"txt JAVA技术集合"中,可能包含了各种Java技术的...
"Collections:吓收集的东西,待整理"这个标题暗示了我们正面临一个包含多种JavaScript资源的集合,这些资源可能包括代码片段、教程、库或者工具,尚未经过系统的分类和整理。下面,我们将详细探讨JavaScript中的集合...
### Java面试题整理知识点 #### 数据结构理解与应用 **数据结构定义与分类:** - **集合结构**:集合中的元素除同属于一种类型外,彼此间没有其他关系。 - **线性结构**:线性结构中的数据元素之间存在一对一的...
这篇笔记主要记录了在使用JavaScript、ExtJS、Struts和Hibernate等技术时的一些问题及其解决方法。 首先,关于JavaScript读写XML文件的问题。JavaScript可以用于客户端的XML处理,但受限于安全策略,无法直接修改...
可以使用Java内置的`Collections.sort()`方法对集合进行排序,实现序列化则需实现`Serializable`接口。 14. **在COLLECTION框架中,实现比较要实现的接口** 要实现`Comparable<T>`接口,以便在集合中进行自然排序...
本篇文章将详细讲解容器的分类,重点探讨Java中的集合框架,包括List、Set以及重写toString方法的重要性,同时也会简单提及Collections类的使用。 首先,我们来了解容器的分类。在Java中,容器主要分为两大类:集合...
【Java基础知识整理】 Java是一种广泛使用的面向对象的编程语言,其基础知识构成了开发人员的基本技能集。以下是一些关键概念的详细解释: 1. **基本数据类型**:Java有8种基本数据类型,包括byte、short、int、...
Java是世界上最广泛使用的编程语言之一,特别是在企业级应用和服务器端开发中占据着主导地位。在面试中,Java相关的技术知识往往成为考察候选者技能的关键点。以下是对给定问题的详细解答: 1. **多线程实现与同步...
整理的java面试有关资源:如 1、 多线程有几种实现方法?同步有几种实现方法? 2、 JDBC 中的 PreparedStatement 相比 Statement 的好处? 3、 Java 中实现多态的机制是什么? 4、 说出 ArrayList,Vector, LinkedList ...
这个压缩包文件“C#基类整理C#比较全的基类集合”可能包含了一系列C#基础类的代码示例和解释,帮助开发者理解和运用这些类。 首先,我们来看一下C#中的几个关键基类: 1. **System.Object**:所有C#类的终极基类,...
Java编程语言复习重点整理 1. **访问修饰符的区别**: - `public`:所有类都可以访问。 - `private`:仅限于在同一类内部访问。 - `protected`:同一包内的类和任何子类可以访问。 - 默认(friendly):同一包...
3. Collections工具类:提供集合操作的方法,如排序、查找、填充等。 五、多线程 1. Thread类:创建线程的方式之一,通过继承Thread类并重写run()方法。 2. Runnable接口:另一种创建线程方式,实现Runnable接口并...
- **特点与用法**:静态成员(变量或方法)属于类本身而不是某个对象。 - **注意点**:静态成员在类加载时就创建了,不依赖于任何对象的存在。 - **使用时机**:当某个属性或方法被所有对象共享时,应考虑使用...
对于非线程安全的容器,可以考虑使用`Collections.synchronizedList`等工具类提供的线程安全版本,或者自定义同步机制来确保线程安全。 综上所述,Java并发编程是一个复杂但又极其重要的领域。掌握好基本概念和最佳...
8.7.1 使用Collections 8.7.2 使用Lists 8.7.3 使用Sets 8.7.4 使用Maps 8.7.5 决定实施方案 8.7.6 未支持的操作 8.7.7 排序和搜索 8.7.8 实用工具 8.8 总结 8.9 练习 第9章 违例差错控制 9.1 基本违例 9.1.1 违例...
- `Collections`类提供了大量静态方法,用于容器的操作和转换,例如排序、反转、填充等,体现了函数式编程思想。 这些知识点仅仅是Java容器对象的一部分,实际的博客可能会包含更多细节,如源码分析、性能对比和...
3. **集合(Collections)**:Java集合框架包括List、Set、Map等接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等。面试官可能会考察你对这些类的理解,以及它们之间的区别和使用场景。 4. **反射...