JavaSE---15 16-常用对象API(集合框架-工具类-Collections-逆序&替换)(其他方法&将非同步集合转成同步集合的方法 )

 rerverse

 

package day19;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CollectionsDemo {
    public static void main(String[] args) {
         reverse();
    }
    public static   void  reverse(){
        List<String> list =new ArrayList<String >();
        list.add("aaaaa");
        list.add("bbbbb");
        list.add("cccc");
        list.add("ppppp");
        for(int  i =0;i<list.size();i++){

            System.out.println(list.get(i));
        }
        Collections.reverse(list);

        for(int  i =0;i<list.size();i++){

            System.out.println(list.get(i));
        }

    }
}
/***
 * aaaaa
 * bbbbb
 * cccc
 * ppppp
 *
 * 逆序后
 * ppppp
 * cccc
 * bbbbb
 * aaaaa
 */

reverseOrder()

 自己实现:

   // 逆序
    public  static  void   reveserOrder(){
        TreeSet<String >  treeSet  =new TreeSet<String >(new Comparator<String>() {
            @Override
            public int compare(String s, String t1) {
                int  temp =t1.compareTo(s);//逆序   (s.compareTo(tl);)自然序
                return temp ;
            }
        })  ;
        treeSet.add("aaaaa");
        treeSet.add("bbbbb");
        treeSet.add("cccc");
        treeSet.add("zzzzz");
      System.out.println(treeSet);[zzzzz, cccc, bbbbb, aaaaa]
    }
}

使用   TreeSet<String > treeSet =new TreeSet<String >(Collections.reverseOrder()) ;

   // 逆序
    public  static  void   reveserOrder(){
       /* TreeSet<String >  treeSet  =new TreeSet<String >(new Comparator<String>() {
            @Override
            public int compare(String s, String t1) {
                int  temp =t1.compareTo(s);//逆序
                return temp ;
            }
        })  ;*/
        TreeSet<String >  treeSet  =new TreeSet<String >(Collections.reverseOrder())  ;
        treeSet.add("aaaaa");
        treeSet.add("bbbbb");
        treeSet.add("cccc");
        treeSet.add("zzzzz");
      System.out.println(treeSet);//[zzzzz, cccc, bbbbb, aaaaa]
    }
}

 

将一个已有自定义的比较器 逆转

public  static  void   reveserOrderByLength(){

        TreeSet<String >  treeSet  =new TreeSet<String >(Collections.reverseOrder(new CompareByLength()))  ;
        treeSet.add("aaaaa");
        treeSet.add("bbbbb");
        treeSet.add("cccc");
        treeSet.add("zzzzzaaaaaaaaa");
        System.out.println(treeSet);
    }

replaceAll  将表中的值替换成另外一个值

内部实现原理  set( indexOf("aaaaa"),"AAAAA"); 

public static   void  repalaceAll(){
    List<String> list =new ArrayList<String >();
    list.add("aaaaa");
    list.add("bbbbb");
    list.add("cccc");
    list.add("pppppaaaaaa");
    Collections.replaceAll(list,"aaaaa","AAAAA");
   System.out.println(list);


}

  fill 全部替换 可用于全部初始化一次:

 

public static   void  fill(){
    List<String> list =new ArrayList<String >();
    list.add("aaaaa");
    list.add("bbbbb");
    list.add("cccc");
    list.add("pppppaaaaaa");
    Collections.fill(list,"AAAAA");
   System.out.println(list);

}

shuffle 使用指定的随机源随机排列指定的列表 

 

 

public static   void  shuffle(){
    List<String> list =new ArrayList<String >();
    list.add("aaaaa");
    list.add("bbbbb");
    list.add("cccc");
    list.add("pppppaaaaaa");
    Collections.shuffle(list);
    System.out.println(list);//[pppppaaaaaa, cccc, aaaaa, bbbbb]  随机 放在list  有啥用? 扑克牌洗牌
}

 (面试题)多线程  怎么办?  

非同步的集合,自己加锁 

ArraList 与Vector 有什么区别呀?

1.一个效率高一个效率低 2,一个同步 ,一个不同步。3.ArrayList 替代 Vector  ,Vector 不用了。

ArrayList 怎么变成同的?  1.自己加锁    2.集合框架中给我们提供了 Collections的静态方法sychoniedxxxx可以实现非同步集合转为同步集合。

 

package day19;
//自己实现同步的List

import java.util.List;


List  list =new ArrayList();
list=MyCollections.synList(list);




public class MyCollections {
 private  static  final   Object  lock= new Object();
  private   List  list;
  public static   List synList(List  list){
      return new MyList(list);
  }
  
 class  MyList  implements List  {
     MyList (List   mlist){
        list=mlist;
     }
     @Override
     public Object get(int i) {
         synchronized (lock){//加锁
             return list.get(i);
         }
     }
     }
     @Override
     public int size() {
         synchronized (lock){//加锁{
             return list.size();
         }
     }
 }

Collections  已经实现了这种功能。 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值