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;
}
}