• Java学习之集合框架工具类


    一、Collections

    Collections中的方法都是静态的

    1 void sort(List<? extends Comparable<? super T>> list);//list集合元素必须具备比较性
    2 void sort(List<T>,Comparator<? super T> c);//指定比较器,list集合元素可以不具备比较性
    1 void swap(List<T>,int i,int j);//位置替换,相当于以下代码
    2 //T temp = list.get(i);
    3 //list.set(i,list.get(j));
    4 //list.set(j,temp)
    1 //二分查找(折半查找),List必须先排序再使用binarySearch
    2 int binarySearch(List<? extends Comparable<? super T>> list,T key);
    3 int binarySearch(List<? extends T> list,T key,Comparator<? super T> c);
    1 //求最值
    2 max(Collection<? extends T> coll);
    3 max(Collection<? extends T> coll,Comparator<? super T> comp);
    4 
    5 min(Collection<? extends T> coll);
    6 min(Collection<? extends T> coll,Comparator<? super T> comp);
     1 //逆转
     2 void reverse(List<?> list);
     3 Comparator<T> reverseOrder();//返回一个比较器,强行逆转实现了Comparable接口的对象collection的自然顺序
     4 Comparator<T> reverseOrder(Comparator<T> cmp);
     5 /*
     6 用法:
     7 1、TreeSet ts=new TreeSet(reverseOrder());
     8 
     9 2、sort(list,reverseOrder());
    10 */
    1 //替换
    2 boolean replaceAll(List<T> list,T oldVal,T newVal);//替换指定值
    3 //实现原理:
    4 list.set(list.indexOf(oldVal,newVal));
    1 //指定元素替换指定列表中所有元素
    2 void fill(List<? super T> list , T obj);
    3 
    4 //随机对指定列表进行置换
    5 void shuffle(List<?> list);
     1 //非同步的集合加锁
     2 List<T> synchronizedList(List<T> list);//返回同步List集合
     3 //原理:
     4 class MyCollections{
     5     public static List synchronizedList(List list){
     6         retutn new MyList(list)
     7     }
     8     private class MyList implements List{
     9         private List list;
    10         private static final Object lock=new Object();
    11         MyList(List list){
    12             this.list=list;
    13         }
    14         
    15         public boolean add(Object obj){
    16             synchronized(lock){
    17                 return list.add(obj);
    18             }
    19         }
    20         public boolean remove(Object obj){
    21             synchronized(lock){
    22                 return list.remove(obj);
    23             }
    24         }
    25     }
    26 }

    二、Arrays

     1 //二分查找
     2 binarySearch
     3 copyOf
     4 copyOfRange
     5 equals
     6 fill
     7 sort
     8 deepEquals(Object[] o1,Object[] o2);//深度比较,比较元素对象中的属性
     9 
    10 List asList(数组);//将数组转成集合。
    11 /*
    12 好处:其实可以使用集合的方法操作数组。
    13 注意:数组的长度是固定的,所以对于集合的增删方法是不可以使用的,否则会发生UnsupportedOperationException
    14 
    15 如果数组中的元素是对象,那么转成集合时,直接将数组中的元素作为集合中的元素
    16 String arr={"ab","abc","abd","abe"};
    17 List list = Arrays.asList(arr);
    18 list元素("ab","abc","abd","abe")
    19 如果数组中的元素时基本类型数值,那么将数组作为集合中的元素
    20 int[] arr = {1,2,3,4};
    21 List list = Arrays.asList(arr);
    22 list元素(int[]数组对象)
    23 */
  • 相关阅读:
    固定textview大小,根据文字多少调整字体自适应textview大小
    这可能是最全的禁用win10自动更新了
    Android Studio 3.0正式版填坑之路
    android studio 3.0之后版本自定义文件名生成apk文件
    Android Studio从2.3升级到3.1注意事项
    Android studio2.3.3升级3.1.2坑
    iterm2 快捷键大全
    php实现的短网址算法分享
    mysql远程连接命令
    Mac下安装与配置Go语言开发环境
  • 原文地址:https://www.cnblogs.com/WarBlog/p/12119319.html
Copyright © 2020-2023  润新知