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