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

 ------- 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-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()

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培训、期待与您交流! ----------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值