Java集合工具类:Collections和ArrayUtils(待更新)

Java集合工具类分为两种,一种是java自带的(无需下jar包,jdk自带),一种是其他公司提供的(要去他们官网下jar包,然后导入使用)。

一、java自带的集合工具类

*****************collections工具类的常用方法*****************

注意:工具类一般都不用创建对象,下面都是静态方法,直接调用就行

1.   将所有指定元素添加到指定 collection 中。可以分别指定要添加的元素,或者将它们指定为一个数组。

其实这个方法也可以叫合并或者拼接。

static boolean       addAll(Collection<?super T>  c,T element1,T element2,T element3,...............)

static boolean       addAll(Collection<?super T>  c,Collection  c1)

2.根据元素的     自然顺序按升序  或者    指定比较器产生的顺序   或者   随机乱序    对指定列表进行排序。

static void      sort(List<T> list)

static void      sort(List<T> list,Comparator<? superT> c)

static void      shuffle(List<T> list)

static void      shuffle(List<T> list,Random rnd)  //使用随机源对列表随机排序,一般不用

3. 使用二分搜索法搜索指定列表,以获得指定对象的下标。因为二分法的前提是必须完成升序排序,所以列表必须有内部比较器或外部比较器对该列表进行升序排序。

static int      binarySearchList<?extends Comparable<? superT>>    list,    T  key)

static int      binarySearch(List<? extendsT> list, T key, Comparator<? superT> c)

4.根据元素的自然顺序  或者  外部比较器定义的顺序,返回给定collection 的最大元素。

static T      max(Collection<?extends T> coll)

static T      max(Collection<? extendsT> coll, Comparator<? superT> comp)

static T      min(Collection<?extends T> coll)

static T      min(Collection<? extendsT> coll, Comparator<? superT> comp)

5.,我们想知道子列表在源列表中存在的位置,方法返回的是子列表第一个字符所在的下标,如果没发现就返回-1,下边两个方法分别是第一次出现和最后一次出现

static int      indexOfSubList(List<?> source,List<?> target)

static int      lastIndexOfSubList(List<?> source,List<?> target)

6.   反转指定列表中元素的顺序。

static void      reverse(List<?> list)

7.    在指定列表的指定位置处交换元素。

static void      swap(List<?> list,int i, int j)

8     使用指定元素替换指定列表中的所有元素,也就是填充列表,也可以叫初始化。

static void      fill(List<?super T> list,T obj)

9      返回  在collection 中  等于  指定对象  的  元素数,也就是返回    集合拥有几个特定元素。

static int       frequency(Collection<?> c,Object o)

10     如果两个指定collection 中没有相同的元素,则返回 true,也就是判断两个集合是否完全不同

static boolean      disjoint(Collection<?> c1,Collection<?> c2)

11     用新的元素替换集合中所有指定的旧的元素

static boolean      replaceAll(List<T> list, T oldVal, T newVal)

12    循环右移列表k位,至于什么是循环右移请百度吧,一般计算机专业的不可能不知道

static void      rotate(List<?> list, int k)

 13     将src列表复制到dest列表中,注意,如果dest列表中原来有元素,src就直接覆盖相应索引位置的元素

static void      copy(List<? super T> dest, List<? extends T> src)

**********************************************************************

总结:集合工具类常用方法——添加,排序,随机乱序,二分法查找,最大最小值,找子集,反转,交换,填充,找相同元素,判断集合相同,替换,循环右移,复制

 

*****************arrays工具类的常用方法*****************

注意:上边那个是对集合的操作,这个是对数组的操作,实际运用中常用也只有hashmap,arraylist和array三种。

1.将数组内容转成字符串     或者   哈希码   的形式输出,如果直接用数组本身的tostring,会输出数组所在的内存地址。

 static  String      Arrays.toString(T[ ] array );

 static  int      Arrays.hashCode(T[ ] array );

2.将数组转化成list集合形式,毕竟集合比数组好操作多了。

但这个方法,限制也多,详情看这个https://www.cnblogs.com/shanheyongmu/p/6364320.html

将一个数组转化为一个List对象,这个方法会返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是Arrays类的静态内部类!用这个对象对列表进行添加删除更新操作,就会报UnsupportedOperationException异常。

static  List<T>      Arrays.asList(T[ ] array );

3   在数组里用二分法查找指定key值,返回key值所在下标,没找到返回-1,而且我们还可以指定搜索范围,但是千万不要忘记使用二分法的前提是这个数组必须要完成升序排序。

static  int      Arrays.binarySearch  (  T[ ]   array , T   key );

static  int      Arrays.binarySearch  (  T[ ]   array , int  fromIndex,  int  toIndex,  T   key );

4 对数组进行排序,我们可以指定要对哪部分数组进行排序,排序方式就是比较器,如果不指定,就默认是用java自带的内部升序比较器,我们也可以指定数组使用我们定义的外部比较器。

static  void      Arrays.sort ( T[ ]   array );

static  void      Arrays.sort ( T[ ]   array, int  fromIndex,  int  toIndex );

static  void      Arrays.sort ( T[ ]   array ,Comparator< ? super T>  c );

static  void      Arrays.sort ( T[ ]   array ,int  fromIndex,  int  toIndex ,Comparator< ? super T>  c );

还有个parallelSort,这个方法采用并行的排序算法排序,听说很叼,但是基本没用过

 

5.将数组里的所有元素都替换为指定值val,相当于初始化,我们可以指定要进行初始化的范围

static  void      Arrays.fill  (  T[ ]   array ,  T   val );

static  void      Arrays.fill  (  T[ ]   array , int  fromIndex,  int  toIndex , T   val );

6 复制数组到一个新数组,我们必须指定新数组的长度,如果比原数组长,空位补0,如果比原数组短,直接把原数组截断。

static  T[]      Arrays.copyOf  (  T[ ]   array ,  int  newLength );

把数组的一部分复制到新数组,不用指定新数组长度,默认等长。

static  T[]      Arrays.copyOfRange  (  T[ ]   array ,  int  from,int   to );

7  判断两个数组是否相同

static  boolean      Arrays.equals  (  T[ ]   array1 ,  T[ ]   array2 );

8.  对数组里的所有元素进行自定义操作,也就是遍历的同时进行数据修改或操作。

static  void      Arrays.setAll  (  T[ ]   array ,  Function  f );

注意1:上边的那些方法只适用一维数组,arrays工具类提供了三个专门应对多维数组的方法,分别是deepEquals,deepToString,deppHashcode,这些方法的内部都是用递归实现的。

 注 意 2:API里很多方法前都加了个parallel,这是应对数据量巨大时的并行操作。(我也不清楚是并发还是并行,用就行了)

**********************************************************************

总结:数组工具类常用方法——转化,二分法查找,排序,初始化,复制,判断数组相同,遍历,多维数组

 

二、Apache公司提供的工具类

Apache官方API:http://commons.apache.org/proper/commons-lang/javadocs/api-release/index.html

Apache的工具类确实比java自带的工具好用,功能也多,就是平时写demo的时候导入太麻烦。

平时最常用集合工具类有5个:CollectionUtils,ListUtils,SetUtils,MapUtils,ArrayUtils

这就是常说的Apache集合全家桶,里边功能超级多,想用啥直接去api里边找就行

英文是比较难看懂,你先想想自己要啥功能,然后想一个和功能相关的单词,直接ctrl+f 搜索,绝对能搜到。

比如想看集合里是不是有空位,那搜blank或isnot,绝对能搜到。

等以后会更新一些常用的方法,就不分包介绍了,直接上方法

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值