Collection和Collections的区别:
Collection是JAVA集合框架中的顶层接口.常用的两个子接口为:Set和List.
Collections是Java集合框架中操作集合的工具类,所有的方法都是静态的.提供了对List进行排序的功能,也提供了将线程不安全的转为线程安全的方法.
import java.util.*;
class CollectionsDemo
{
public static void main(String[] args)
{
ArrayList<String> al = new ArrayList<String>();
al.add("zdd");
al.add("ad");
al.add("qsdw");
al.add("vwerre");
al.add("sxsd");
System.out.println("***按照自然顺序***");
String max = Collections.max(al);
String min = Collections.min(al);
System.out.println("max="+max+";min="+min);
System.out.println("***按照字符长度***");
String max1 = Collections.max(al, new MyComparator());
String min1 = Collections.min(al, new MyComparator());
System.out.println("max="+max1+";min="+min1);
Collections.sort(al);
System.out.println(al.toString());
toMyString(al );
int num = Collections.binarySearch(al, "qsdw");
System.out.println(num);
Collections.sort(al, new MyComparator());
System.out.println(al.toString());
int num1 = myBinarySearch(al, "qsdw", new MyComparator());
System.out.println(num1);
}
public static void toMyString(ArrayList<String> al)
{
StringBuilder sb = new StringBuilder();
sb.append("[");
for (Iterator it = al.iterator(); it.hasNext(); )
{
sb.append(it.next() + ", ");
}
//sb.deleteCharAt(sb.length() - 2);
sb.delete(sb.length()-2,sb.length());
sb.append("]");
System.out.println(sb);
}
public static int myBinarySearch(List <String> l, String key, Comparator<String> comp)
{
int max,min,mid;
max = l.size() - 1;
min = 0;
while (min <= max)
{
mid = (max + min)/2;
int num = comp.compare(key, l.get(mid)); //按照自定义比较器比较
if (num > 0)
min = mid + 1;
else if (num < 0)
max = mid - 1;
else
return mid;
}
return -1;
}
}
class MyComparator implements Comparator <String>
{
public int compare(String str1, String str2)
{
if (str1.length() > str2.length())
return 1;
else if (str1.length() < str2.length())
return -1;
else
return str1.compareTo(str2);
}
}