标签:
Collections :工具类,专门对集合进行操作的。所有方法都是静态的,构造方法是私有的,不可以创建对象,通过Collections.xxx();调用工具类中的方法。
1,
Collections.sort(); //对集合进行排序,List可以,Set不可以,因为有自动排序的TreeSet,其实是调用对象的Compare方法,如果想要排序自定义对象,
sort后面要传入比较器。
Collections.sort(list,new Strlen());
下面有举例说明
2,
Collections.max();//取出最大值,也是根据Compare方法来比较的。
也可以写 Collections.max(list,new Strlen());
3,
int c =Collections.binarySearch(list,"kk"); //二分查找,返回元素角标,如果不存在该元素,会返回负数,位置三也可以传入比较器,在接下来调用比较器的compare方法。
4,
Collections.fill(list, "pp");//将集合中的元素全部换为“pp”
sop(list);
5,
Collections.replaceAll(list,old_value,new_value);//将集合中的老值全部换为新值。
6,
Collections.reverse(list);//翻转整个list
7,
Collections.reverseOrder() ;//返回一个Comparator对象,会倒序。
TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder()); 即可
也可以将现有比较器强行逆转,以下面例子中的自定义比较器为例。
TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new Strlen()));
8,
List ls =Collections.synchronizedList(List ls);返回一个线程安全的list
9,Collections.swap(list.index1,index2);//调换两个位置的元素。
10,Collections.shuffle(list); 将集合元素随机排列。
Arrays:操作数组工具类,里面包含了一大堆静态方法。
1,
Arrays.sort(l);
Arrays.sort(l,from,to);有很多和上面相同,只不过把集合换为数组了。
2,Arrays.toString(a);//返回字符串
3,List ArrayList.asList(a); //将数组变为list集合,但是不可以使用集合的增删方法。因为数组的长度是固定的。仅仅是将数组的引用放入了集合中。
如果数组中的元素都是对象,那么数组中的元素就直接转成集合中的元素
如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素
集合变数组,T [] collection.toArray(T [] a); //下面有举例说明,长度最好要等于arr的长度。
高级for循环
格式
for(数据类型 变量名 :被遍历的集合或数组)
{
sop(变量名);但不可修改,只能取出,原理上还是Iterator
}
import java.util.*;
public class Test {
public static void main(String[] args)
{
ArrayList<String> li = new ArrayList<String> ();
li.add("abc1");
li.add("abc2");
li.add("abc3");
for(String s:li)
{
sop(s);
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
可变参数
可变参数一点要定义在参数列表的最后边。
import java.util.*;
public class Test {
public static void main(String[] args)
{
show(1,2,3,5,8,6,5,5,65,6,6,6,6,7);
}
public static void show(int ...arr)
{
for(int x=0;x<arr.length;x++)
sop(arr[x]);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
静态倒入
import static java.util.Arrays*;
可以直接写sort(array);
当方法重名时,知道所属的对象或者类。
自定义比较器举例:比较字符串长度。
import java.util.*;
public class Test {
public static void main(String[] args)
{
sort();
}
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void sort()
{
List<String> list = new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("zzz");
list.add("kk");
list.add("abcd");
list.add("qq");
list.add("z");
sop(list);
Collections.sort(list,new Strlen());
sop(list);
}
}
class Strlen implements Comparator<String>
{
public int compare(String s1,String s2)
{
int num = s1.length()-s2.length();
if(num==0)
return s1.compareTo(s2);
else
return num;
}
}
集合变数组:
import java.util.*;
public class Test {
public static void main(String[] args)
{
ArrayList<String> li = new ArrayList<String> ();
li.add("abc1");
li.add("abc2");
li.add("abc3");
String arr [] = li.toArray(new String [5]);
sop(Arrays.toString(arr));
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
JAVA 16(集合框架工具类)
标签:
原文地址:http://www.cnblogs.com/hitxx/p/4849602.html