掌握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() + "、") ;
- }
- }
- };
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) ;
- }
- };
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) ;
- }
- };
交換指定位置的內容:
完成一個交換內容的操作: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、開發中是否使用此類沒有明確的規定,按照個人的喜好執行即可。