掌握Collections 与 Collection 接口的区别
掌握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 ; import java.util.Set ; public class CollectionsDemo01{ public static void main(String args[]){ List<String> allList = Collections.emptyList() ; // 返回空的 List集合 Set<String> allSet = Collections.emptySet() ; // 返回空的 List集合 allList.add("Hello") ; // 加入数据 } };
如果要想为集合中增加内容,则肯定使用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 CollectionsDemo02{ public static void main(String args[]){ List<String> all = new ArrayList<String>() ; // 返回空的 List集合 Collections.addAll(all,"MLDN","LXH","mldnjava") ; Iterator<String> iter = all.iterator() ; while(iter.hasNext()){ System.out.print(iter.next() + "、") ; } } };选择何种的加入操作根据人个喜好。
import java.util.Collections ; import java.util.List ; import java.util.ArrayList ; import java.util.Iterator ; public class CollectionsDemo03{ public static void main(String args[]){ List<String> all = new ArrayList<String>() ; // 返回空的 List集合 Collections.addAll(all,"MLDN","LXH","mldnjava") ; Collections.reverse(all) ; // 内容反转 Iterator<String> iter = all.iterator() ; while(iter.hasNext()){ System.out.print(iter.next() + "、") ; } } };在Collections 中也提供了二分检索的方法:
public static <T> int BinarySearch (List<? extends Comparable <? super T>> list, T key)
完成检索:
import java.util.Collections ; import java.util.List ; import java.util.ArrayList ; import java.util.Iterator ; public class CollectionsDemo04{ public static void main(String args[]){ List<String> all = new ArrayList<String>() ; // 返回空的 List集合 Collections.addAll(all,"MLDN","LXH","mldnjava") ; int point = Collections.binarySearch(all,"LXH") ; // 检索数据 System.out.println("检索结果:" + point) ; } };替换内容:
public static <T> boolean replaceAll (List <T> list, T oldVal, TnewVal)
执行替换的操作:
import java.util.Collections ; import java.util.List ; import java.util.ArrayList ; import java.util.Iterator ; public class CollectionsDemo05{ public static void main(String args[]){ List<String> all = new ArrayList<String>() ; // 返回空的 List集合 Collections.addAll(all,"MLDN","LXH","mldnjava") ; if(Collections.replaceAll(all,"LXH","李兴华")){// 替换内容 System.out.println("内容替换成功!") ; } System.out.print("替换之后的结果:") ; System.out.print(all) ; } };之前曾经说过,使用TreeSet 可以进行排序操作,那么在Collections 类中也提供了这样的一个排序操作:
public static <T extends Comparable <? super T>> void sort(List<T> list)
完成捐弃的功能实现
import java.util.Collections ; import java.util.List ; import java.util.ArrayList ; import java.util.Iterator ; public class CollectionsDemo06{ public static void main(String args[]){ List<String> all = new ArrayList<String>() ; // 返回空的 List集合 Collections.addAll(all,"1、MLDN","2、LXH","3、mldnjava") ; 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) ; } };如果要进行排序的话,则肯定对象所在的类必须实现 Comparable 接口。
交换指定位置的内容:
完成一个交换内容的操作:public static void swap(List <?> list, int i, int j)
import java.util.Collections ; import java.util.List ; import java.util.ArrayList ; import java.util.Iterator ; public class CollectionsDemo07{ 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、在类集中为了方便集合的操作提供了 Collections 类,此类与 Collection 接口没有直接的继承或实现关系,只是对所有的接口有所支持而已。
2、开发中是否使用此类没有明确的规定,按照个人的喜好执行即可。