Collections 工具类和 Arrays 工具类常见方法
Collections
Collections 工具类常用方法:
- 排序
- 查找,替换操作
- 同步控制(不推荐,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合)
排序操作
1 | void reverse(List list)//反转 |
示例代码:
1 | ArrayList<Integer> arrayList = new ArrayList<Integer>(); |
查找,替换操作
1 | int binarySearch(List list, Object key)//对List进行二分查找,返回索引,注意List必须是有序的 |
示例代码:
1 | ArrayList<Integer> arrayList = new ArrayList<Integer>(); |
同步控制
Collections提供了多个synchronizedXxx()
方法·,该方法可以将指定集合包装成线程同步的集合,从而解决多线程并发访问集合时的线程安全问题。
我们知道 HashSet,TreeSet,ArrayList,LinkedList,HashMap,TreeMap 都是线程不安全的。Collections提供了多个静态方法可以把他们包装成线程同步的集合。
最好不要用下面这些方法,效率非常低,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合。
方法如下:
1 | synchronizedCollection(Collection<T> c) //返回指定 collection 支持的同步(线程安全的)collection。 |
Collections还可以设置不可变集合,提供了如下三类方法:
1 | emptyXxx(): 返回一个空的、不可变的集合对象,此处的集合既可以是List,也可以是Set,还可以是Map。 |
示例代码:
1 | ArrayList<Integer> arrayList = new ArrayList<Integer>(); |
Arrays类的常见操作
- 排序 :
sort()
- 查找 :
binarySearch()
- 比较:
equals()
- 填充 :
fill()
- 转列表:
asList()
- 转字符串 :
toString()
- 复制:
copyOf()
排序 : sort()
1 | // *************排序 sort**************** |
在做算法面试题的时候,我们还可能会经常遇到对字符串排序的情况,Arrays.sort()
对每个字符串的特定位置进行比较,然后按照升序排序。
1 | String[] strs = { "abcdehg", "abcdefg", "abcdeag" }; |
查找 : binarySearch()
1 | // *************查找 binarySearch()**************** |
比较: equals()
1 | // *************比较 equals**************** |
填充 : fill()
1 | // *************填充fill(批量初始化)**************** |
转列表 asList()
1 | // *************转列表 asList()**************** |
转字符串 toString()
1 | // *************转字符串 toString()**************** |
复制 copyOf()
1 | // *************复制 copy**************** |