Java集合工具类分为两种,一种是java自带的(无需下jar包,jdk自带),一种是其他公司提供的(要去他们官网下jar包,然后导入使用)。
注意:工具类一般都不用创建对象,下面都是静态方法,直接调用就行
1. 将所有指定元素添加到指定 collection 中。可以分别指定要添加的元素,或者将它们指定为一个数组。
其实这个方法也可以叫合并或者拼接。
static boolean addAll(Collection c,T element1,T element2,T element3,...............)
static boolean addAll(Collection c,Collection c1)
2.根据元素的 自然顺序按升序 或者 指定比较器产生的顺序 或者 随机乱序 对指定列表进行排序。
static void sort(List
static void sort(List
static void shuffle(List
static void shuffle(List
3. 使用二分搜索法搜索指定列表,以获得指定对象的下标。因为二分法的前提是必须完成升序排序,所以列表必须有内部比较器或外部比较器对该列表进行升序排序。
static int binarySearch( List> list, T key)
static int binarySearch(List list, T key, Comparator c)
4.根据元素的自然顺序 或者 外部比较器定义的顺序,返回给定collection 的最大元素。
static T max(Collection coll)
static T max(Collection coll, Comparator comp)
static T min(Collection coll)
static T min(Collection coll, Comparator 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 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
12 循环右移列表k位,至于什么是循环右移请百度吧,一般计算机专业的不可能不知道
static void rotate(List list, int k)
13 将src列表复制到dest列表中,注意,如果dest列表中原来有元素,src就直接覆盖相应索引位置的元素
static void copy(List dest, List src)
**********************************************************************
总结:集合工具类常用方法——添加,排序,随机乱序,二分法查找,最大最小值,找子集,反转,交换,填充,找相同元素,判断集合相同,替换,循环右移,复制
注意:上边那个是对集合的操作,这个是对数组的操作,实际运用中常用也只有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
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官方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,绝对能搜到。
等以后会更新一些常用的方法,就不分包介绍了,直接上方法