Java学习第17天:集合框架Collection的知识补充和其他类(还有增强for)

来源:互联网 发布:淘宝网曼天雨清仓服饰 编辑:程序博客网 时间:2024/06/08 05:47
 ------- android培训、java培训、期待与您交流! ----------

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)


 

1Collectins-max

 

package until_17; import java.util.*; public class Collections_Max { public static void main(String[] args) {// collections-sort\colletions-maxList<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 stubList<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;elsereturn 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,全部都会替换成bSystem.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()

6Arrays

String[] array = {“a”,“a”,“a”,“a”,“a”,“a”};

Arrays.asList(array);//数组转换成集合

可以使用集合的思想来操作数组

但是不可以使用增删方法,因为数组的长度是固定的

contains

get

subList

indexOf

如果使用增删方法,会报出UnsupertedOperationException

 

如果数组中的元素是作为对象的存在,那么转换成集合之后是集合中的元素!

如果数组中的元素是作为元素的存在,那么转换集合之后,该数组作为集合的元素存在!

7、集合转换成数组

使用toArraynew 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 导入包中的所有静态成员!

当类名重复时,需要指定具体的包名!

当方法名重复时,需要指定的所属对象或者类!



 ------- android培训、java培训、期待与您交流! ----------
0 0