1.掌握Collections 与 Collection 接口的区别
2.掌握Collections 类中提供的主要操作方法
在面试题目中有可能会问这样一个问题,请回答, Collections 和 Collection 的关系。Collections 类与 Collection 没有直接的关系,但是与集合中的各个接口都有操作的方法支持。
空集合的操作:
public static final <T> List <T> emptyList()
public static final <T> Set <T> emptySet()
import java.util.Collections ; import java.util.List ; public class CollectionsDemo1{ public static void main(String args[]){ List<String> allList = Collections.emptyList() ; // 返回空的 List集合 allList.add("Hello") ; // 加入数据 } }
执行结果出现异常:
Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:131) at java.util.AbstractList.add(AbstractList.java:91) at CollectionsDemo1.main(CollectionsDemo1.java:6)
原因:使用Collections.emptyList(),返回一个空的List,但是发现它不支持Add功能,调用Add会抛出unsupportedException,在以后要返回一个空的List,并还需要后续操作时,不能使用Collections.emptyList()方法,看文档发现,List的实现类都有自己的实现,而返回的EmptyList的实现没有实现add(int index, E element方法,使用了
AbstractList.add(int index, E element){
throw new UnsupportedOperationException();
}
如果要想为集合中增加内容,则肯定使用add() 方法,在Collections 中也提供了专门的增加操作。
public static <T> boolean addAll (Collection<? super T> c, T... elements)使用了可变参数,所以,可以任意输入各种类型的数据。
import java.util.Collections ; import java.util.List ; import java.util.ArrayList ; import java.util.Iterator ; public class CollectionsDemo1{ public static void main(String args[]){ List<String> all = new ArrayList<String>() ; // 返回空的 List集合 Collections.addAll(all,"MLDN","LXH","mldnjava") ;//用collections的方法想集合中添加元素 System.out.print("反转前集合中的内容:"); Iterator<String> iter = all.iterator() ; while(iter.hasNext()){ System.out.print(iter.next() + "、") ; } System.out.println(); Collections.reverse(all); System.out.print("反转后集合中的内容:"); iter = all.iterator() ; while(iter.hasNext()){ System.out.print(iter.next() + "、") ; } } }
//output result 反转前集合中的内容:MLDN、LXH、mldnjava、 反转后集合中的内容:mldnjava、LXH、MLDN、
排序操作:public static <T extends Comparable <? super T>> void sort(List<T> list)
import java.util.Collections ; import java.util.List ; import java.util.ArrayList ; public class CollectionsDemo1{ public static void main(String args[]){ List<String> all = new ArrayList<String>() ; // 返回空的 List集合 Collections.addAll(all,"1、MLDN","3、mldnjava","2、LXH","c、aaa") ; Collections.addAll(all,"B、www.mldn.cn") ; Collections.addAll(all,"A、www.mldnjava.cn") ; System.out.println("排序之前的集合:" + all) ; Collections.sort(all) ; System.out.println("排序之后的集合:" + all) ; } }
输出结果:
排序之前的集合:[1、MLDN, 3、mldnjava, 2、LXH, c、aaa, B、www.mldn.cn, A、www.mldnjava.cn] 排序之后的集合:[1、MLDN, 2、LXH, 3、mldnjava, A、www.mldnjava.cn, B、www.mldn.cn, c、aaa]
交换指定位置的内容:public static void swap(List <?> list, int i, int j)
import java.util.Collections ; import java.util.List ; import java.util.ArrayList ; public class CollectionsDemo1{ public static void main(String args[]){ List<String> all = new ArrayList<String>() ; // 返回空的 List集合 Collections.addAll(all,"1、MLDN","2、LXH","3、mldnjava") ; System.out.println("交换之前的集合:" + all) ; Collections.swap(all,0,2) ; System.out.println("交换之后的集合:" + all) ; } }
输出结果:
交换之前的集合:[1、MLDN, 2、LXH, 3、mldnjava] 交换之后的集合:[3、mldnjava, 2、LXH, 1、MLDN]
替换内容:public static <T> boolean replaceAll (List <T> list, T oldVal, TnewVal)
import java.util.Collections ; import java.util.List ; import java.util.ArrayList ; public class CollectionsDemo1{ public static void main(String args[]){ List<String> all = new ArrayList<String>() ; // 返回空的 List集合 Collections.addAll(all,"MLDN","LXH","mldnjava") ; System.out.println("替换之前的结果"+all); if(Collections.replaceAll(all,"LXH","李兴华")){// 替换内容 System.out.println("内容替换成功!") ; } System.out.print("替换之后的结果:") ; System.out.print(all) ; } }
输出结果:
替换之前的结果[MLDN, LXH, mldnjava] 内容替换成功! 替换之后的结果:[MLDN, 李兴华, mldnjava]
相关推荐
Java操作集合工具类Collections使用详解 Java操作集合工具类Collections是Java语言中一个非常重要的工具类,主要用于操作Set、List和Map等集合。Collections工具类提供了大量方法对集合元素进行排序、查询和修改等...
集合工具类Collections是Java编程语言中的一个非常重要的辅助类,它提供了一系列静态方法,用于对各种集合框架(如List、Set、Queue等)进行操作。这些方法包括但不限于排序、查找、替换以及同步控制,极大地提高了...
Java工具类集合是Java开发中不可或缺的一部分,它们提供了一系列便捷的方法,帮助开发者高效地处理各种常见任务。在Java中,工具类通常被组织在各种包下,如`java.util`、`java.lang`、`java.io`等。下面将详细介绍...
下面是一个自定义的集合工具类 CollectionsCustom,用于对集合进行处理和操作。 CollectionsCustom工具类 CollectionsCustom工具类是一个自定义的集合工具类,用于对集合进行处理和操作。该类提供了一个reduce方法...
#### 四、集合工具类:Collections `Collections`是一个工具类,提供了一系列静态方法来操作集合对象,如排序、填充、反转等。 #### 五、特例:容器中装容器 - 实现方法:每个`Collection`都有`addAll()`方法,...
Collections集合工具类是Java编程语言中的一个重要组成部分,它提供了对集合框架的支持,包括排序、查找、复制、反转等操作。在处理ArrayList、LinkedList等List类型的集合时,Collections工具类的`sort()`方法非常...
- `ListUtils`和`MapUtils`:Apache Commons Collections中的工具类,提供了集合的创建、合并、分割等高级操作。 6. **反射工具类**: - `ClassUtils`:Apache Commons Lang库中的工具类,提供类的加载、属性检查...
Java集合框架是Java编程中不可或缺的部分,而Collections工具类则是这个框架中的一个重要工具,它提供了大量静态方法,用于操作各种集合接口(如List、Set、Queue等)的实例。本教程将深入探讨Collections工具类中的...
这三款库在Java开发中应用广泛,特别是在处理对象属性、集合操作和通用工具类时。它们使得代码更加简洁,减少了重复工作,并提高了代码的可读性和可维护性。在实际项目中,根据需求选择合适版本的Apache Commons库,...
Apache Commons Collections是Java开发中常用的一个开源库,它为Java集合框架提供了大量的实用工具类和扩展。"commons-collections-3.2.jar"是该库的版本3.2的实现,它包含了一系列高效、实用且功能丰富的数据结构和...
这是为了方便大家了解集合类的相关知识所找的一个MarkDown文档,读者可以通过阅读了解各种子类集合的实现原理,红黑树的实现也会有所介绍.
3. **集合工具类**:Java的Collections类提供了集合的一些基本操作,而Guava库则提供了更加强大的集合处理功能,如Multimap、Multiset、Immutable集合等。 4. **数学计算工具类**:如Apache Commons Math提供了各种...
6. **集合工具类**:包括`CollectionUtils`、`ListUtils`、`SetUtils`等,提供了一套全面的静态方法,用于集合的比较、合并、查找、排序等操作。 7. **类型安全的泛型**:Collections 4.4全面支持Java泛型,确保了...
Collections 是 Java 中的一个集合工具类,提供了多种操作集合的方法。下面是对 Collections 中部分方法的详细解释。 概述 Collections 类是一个集合工具类,它提供了多种操作集合的方法,如查找、排序、线程安全...
3. **集合工具类**: - `Collections`:Java 核心库中的工具类,提供了对集合框架的操作,如排序、反转、填充、查找等。 - `Guava` 库中的 `Collections2`, `Lists`, `Sets`, `Multisets` 等:Google 的 Guava 库...
在Java编程语言中,工具类集合是一系列实用的类,它们提供了各种通用功能,帮助开发者更高效地编写代码。这些工具类通常包含在Java的`java.util`以及其他相关的包中,如`java.text`,`javax.imageio`,`javax.xml`等...
一、 Collections 工具类 1. 排序:Collections.sort() 方法可以实现升序和降序排序。 例如: List list = new ArrayList(); list.add(2); list.add(1); list.add(3); Collections.sort(list);//升序 System.out....
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...
- `Collections`类:针对集合框架的工具类,包含排序、查找、反转等方法。 2. **java.time包**(Java 8引入):提供了新的日期和时间API,如`LocalDate`、`LocalTime`、`LocalDateTime`、`ZonedDateTime`等,比旧...