1. 程式人生 > >collection和collections的區別

collection和collections的區別

import 替換 但是 param ava 自然 key 搜索 per

colleciton是集合接口,繼承它的接口有list,set,註意map集合雖然也屬於集合體系,但是map並不繼承collection,map和collection是平級關系

collections是集合工具類,服務於colleciton,相當於collciont的工具,常用的方法有:
static <T extends Comparable<? super T>> void sort(List<T> list)
根據元素的自然順序 對指定列表按升序進行排序。
static <T> void sort(List<T> list, Comparator<? super T> c)

根據指定比較器產生的順序對指定列表進行排序
static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
根據元素的自然順序,返回給定 collection 的最大元素。
static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp)
根據指定比較器產生的順序,返回給定 collection 的最大元素。
static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)
使用二分搜索法搜索指定列表,以獲得指定對象。
static <T> void fill(List<? super T> list, T obj)
使用指定元素替換指定列表中的所有元素
static void reverse(List<?> list) 反轉指定列表中元素的順序。
static void shuffle(List<?> list) 使用默認隨機源對指定列表進行置換。
二分法原理

import java.util.ArrayList;
import java.util.List;

public class Demo {  

    public static void main(String[] args) {  
        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        System.out.println(list);
        int binarySearch = binarySearch(list,4);
        System.out.println(binarySearch);
    }  
    /**
     * 註意使用此方法的前提是已經排好序
     * @param list
     * @param key
     * @return
     */
    public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key){
        int max=list.size()-1;//最大的位置
        int min=0;//最小的位置
        int mid=0;//中間位置
        while(min<=max){
            mid=(max+min)>>1;

            Comparable<? super T> comparable = list.get(mid);
            int num= comparable.compareTo(key);
            if(num>0){
                max=mid-1;
            }else if(num<0){
                min=mid+1;
            }else{
                return mid;
            }
        }
        return -1;
    }
}  

collection和collections的區別