Until17
1、Collectins-max
2、Collections-binarySearch
3、Collections-替换反转
4、Collections-reverseOrder
5、Collections-SynList
6、Arrays
7、集合转换成数组
8、增强for循环
9、可变参数
10、静态导入
先来个方法总结:
(1)排序 sort(); 排序方法都是用于操作List集合
如:Collections.sort(al);
Collections.sort(al,new MyComparator());//比较器传到这里!
(2)获取最大值(要先让其实现比较性)max
如:String max = Collections.max(al);
String max1 = Collections.max(al,new MyComparator());
(3)二分查找(必须是有序的)binarySearch();
如:Collections.sort(al,new StrLenComparator());
int index = Collections.binarySearch(al,"qq");//如果查找的值不存在,返回-(插入点角标)-1
int index = Collections.binarySearch(al,"qq",new MyCompatator()); //当要查找的元素对象不带比较性时,
可以传入自定义比较器
(4)将集合中的元素全部替换成指定元素 fill();
如:Collections.fill(al,"张三"); //将集合中元素全部替换成“张三”
(5)将集合所有某个名称元素替换成指定元素 replaceAll();
如:Collections.replaceAll(al,"qq","张三"); //将名称为qq的元素换成张三。
(6)将集合中的元素顺序反转 reverse();
如:Collections.reverse(al);
(7)将两个指定位置上的元素互换 swap();
如:Collections.swap(al,1,3);//互换集合al中的1、3位置上的元素
(8)将集合中元素按照随机顺序重新排序 shuffle()
如:Collections.shuffle(al);
(9)reverseOrder()方法返回一个比较器,比较顺序与元素自然顺序相反。
reverseOrder(Comparator() cmp),可以传入一个比较器,返回一个与传入比较器比较顺序相反的比较器。
(10)将线程不同步的集合转成线程同步的集合
synchronizedList(List<> l)
synchronizedMap(Map<> m)
synchronizedSet(Set<> s)
1、Collectins-max
package until_17;
import java.util.*;
public class Collections_Max {
public static void main(String[] args) {
// collections-sort\colletions-max
List<String> l = new ArrayList<String>();
l.add("sss");
l.add("s");
l.add("zzzz");
l.add("asdss");
l.add("qwe");
l.add("d");
System.out.println(l);
Collections.sort(l); //排序
System.out.println(l);
System.out.println(Collections.max(l,new ss()));//找最大值!可传入比较器
}
}
class ss implements Comparator{
public int compare(Object o1,Object o2)
{
String s1 = (String)o1;
String s2 = (String)o2;
System.out.println(s1+"==="+s2);
if(s1.length()>s2.length())
return 1;
if(s1.length()<s2.length())
return -1;
return 0;
}
}
2、Collections-binarySearch
使用binarySearch必须是有序集合!
package until_17;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Collection_binarySearch {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> l = new ArrayList<String>();
l.add("sss");
l.add("ssa");
l.add("zzzz");
l.add("asdss");
l.add("qwe");
l.add("d");
System.out.println(l);
int s = Collections.binarySearch(l,"zzzz");//提问!好像当字符串是单个的时候~返回的s值都是-1!比如"s"和"d"
int ss = bs(l,"sas");
System.out.println(s);
System.out.println(ss);
}
//试着写这个方法
public static int bs(List<String> list,String key)
{
int max = list.size()-1;
//System.out.println(max);
int min = 0;
int mid = 0;
while(min<=max)
{
mid = (max+min)>>1;
//System.out.println(mid);
int num = list.get(mid).compareTo(key);
if(num<0)
min = mid+1;
else if(num>0)
max = mid-1;
else
return mid;
}
return -(mid)-1;
}
}
3、Collections-替换反转
package until_17;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Colletions_replace_reverse {
public static void main(String[] args) {
// 替换反转
List<String> l = new ArrayList<String>();
l.add("sss");
l.add("ssa");
l.add("zzzz");
l.add("asdss");
l.add("qwe");
l.add("d");
System.out.println(l);
//替换
Collections.fill(l, "a");
System.out.println(l);
//替换某一个值
Collections.replaceAll(l,"a","b");//只要符合的a,全部都会替换成b
System.out.println(l);
//反转
Collections.reverse(l);
System.out.println(l);
}
}
4、Collections-reverseOrder
package until_17;
import java.util.*;
public class Collections_reverseOrder {
public static void main(String[] args) {
// reverseOrder() 倒序!括号里面可以放入比较器!这样比较器的值也会是倒序的
//TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder());
TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new strReverse()));
ts.add("asdas");
ts.add("aww");
ts.add("asvxsss");
ts.add("zzzs");
System.out.println(ts);
Iterator<String> it = ts.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
}
}
class strReverse implements Comparator<String>{
public int compare(String s1,String s2)
{
return new Integer(s1.length()).compareTo(new Integer(s2.length()));
}
}
5、Collections-SynList
Collections.shuffle(Colletions c) //随机集合
Collections.sort()
6、Arrays
String[] array = {“a”,“a”,“a”,“a”,“a”,“a”};
Arrays.asList(array);//数组转换成集合
可以使用集合的思想来操作数组
但是不可以使用增删方法,因为数组的长度是固定的
contains
get
subList
indexOf
如果使用增删方法,会报出UnsupertedOperationException
如果数组中的元素是作为对象的存在,那么转换成集合之后是集合中的元素!
如果数组中的元素是作为元素的存在,那么转换集合之后,该数组作为集合的元素存在!
7、集合转换成数组
使用toArray(new String[0])方法!数组长度为0
指定类型的数组长度要定义多少呢?
当指定类型的数组长度小于定义的数组长度(size)的时候,会创建新的数组,长度为集合的size()
而当指定类型的数组长度大于定义的数组长度的时候,多出来的元素位置是Null,不会再创建数组
所以最好的是传入======集合.size();
为啥要集合变成数组
========为了限定元素的操作!
Arrays.toString()
8、增强for循环
for(int i : arry)
{
syso(i);
}
一下是1.5版本新特性!
9、可变参数
sort(int ... arr)
{
syso(arr.length)
}
10、静态导入
import static 导入包中的所有静态成员!
当类名重复时,需要指定具体的包名!
当方法名重复时,需要指定的所属对象或者类!