两个工具类Collections 和Arrays
来源:互联网 发布:网络神曲歌曲小鸡 编辑:程序博客网 时间:2024/06/06 00:57
集合框架工具类之Collections:
特点:方法均为静态方法。
常用方法如下:
static
<T> int
binarySearch(List<? extendsComparable<? super T>> list, T key)
使用二分搜索法搜索指定列表,以获得指定对象。
static
<T> int
binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
使用二分搜索法搜索指定列表,以获得指定对象。
static
<T> void
fill(List<? super T> list, T obj)
使用指定元素替换指定列表中的所有元素。
static
<T extends Object & Comparable<? super T>>
T
max(Collection<? extends T> coll)
根据元素的自然顺序,返回给定 collection 的最大元素。
static
<T> T
max(Collection<? extends T> coll,Comparator<? super T> comp)
根据指定比较器产生的顺序,返回给定 collection 的最大元素。
static
<T extends Object & Comparable<? super T>>
T
min(Collection<? extends T> coll)
根据元素的自然顺序 返回给定 collection 的最小元素。
static
<T> T
min(Collection<? extends T> coll,Comparator<? super T> comp)
根据指定比较器产生的顺序,返回给定 collection 的最小元素。
static
<T> boolean
replaceAll(List<T> list, T oldVal, T newVal)
使用另一个值替换列表中出现的所有某一指定值。
static void
reverse(List<?> list)
反转指定列表中元素的顺序。
static
<T> Comparator<T>
reverseOrder()
返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序。
static
<T> Comparator<T>
reverseOrder(Comparator<T> cmp)
返回一个比较器,它强行逆转指定比较器的顺序。
static void
shuffle(List<?> list)
使用默认随机源对指定列表进行置换。
static
<T extends Comparable<? super T>>
void
sort(List<T> list)
根据元素的自然顺序 对指定列表按升序进行排序。
static
<T> void
sort(List<T> list,Comparator<? super T> c)
根据指定比较器产生的顺序对指定列表进行排序。
static void
swap(List<?> list, int i, int j)
在指定列表的指定位置处交换元素。
枚举类型------》集合类型
static
<T> ArrayList<T>
list(Enumeration<T> e)
返回一个数组列表,它按返回顺序包含指定枚举返回的元素。
集合类型------》枚举类型
static
<T> Enumeration<T>
enumeration(Collection<T> c)
返回一个指定 collection 上的枚举。
不同步的集合-----------》同步
static
<T> Collection<T>
synchronizedCollection(Collection<T> c)
返回指定 collection 支持的同步(线程安全的)collection。
static
<T> List<T>
synchronizedList(List<T> list)
返回指定列表支持的同步(线程安全的)列表。
static
<K,V> Map<K,V>
synchronizedMap(Map<K,V> m)
返回由指定映射支持的同步(线程安全的)映射。
static
<T> Set<T>
synchronizedSet(Set<T> s)
返回指定 set 支持的同步(线程安全的)set。
sort方法的自定义实现:
public static <T extends Comparable<? super T>> void mySort(List<T> list){for (int i = 0; i < list.size()-1; i++) {for (int j = i+1; j < list.size(); j++) {if(list.get(i).compareTo(list.get(j))>0){//T temp = list.get(i);//list.set(i, list.get(j));//list.set(j, temp);Collections.swap(list, i, j);}}}}}
public static <T> void mySort(List<T> list,Comparator<? super T> comp){for (int i = 0; i < list.size()-1; i++) {for (int j = i+1; j < list.size(); j++) {if(comp.compare(list.get(i), list.get(j))>0){//T temp = list.get(i);//list.set(i, list.get(j));//list.set(j, temp);Collections.swap(list, i, j);}}}}不同步的ArrayList--------》同步的
给非同步的集合加锁。class MyCollections{public static List synList(List list){return new MyList(list);}private class MyList implements List{private List list;private static final Object lock = new Object();MyList(List list){this.list = list;}public boolean add(Object obj){synchronized(lock){return list.add(obj);}}public boolean remove(Object obj){synchronized(lock){return list.remove(obj);}}}}<pre name="code" class="html">List list = new ArrayList();//非同步的。list = MyCollections.synList(list);//返回一个同步的list.
集合框架工具类之Arrays:
特点:方法均为静态
常用方法:
Arrays.toString(type[] name);字符串形式返回数组内容
Arrays.binarySearch(type[] name,type val);二分查找
Arrays.sort(type[] name);数组排序
Arrays.equals(type[] name1,type[] name2);判断两数组是否相等
重点方法:
数组--------》集合
好处:其实可以使用集合的方法操作数组中的元素。
static
<T> List<T>
asList(T... a)
返回一个受指定数组支持的固定大小的列表。 使用该方法注意点:
1. 数组的长度是固定的,所以对于集合的增删方法是不可以使用的
否则会发生UnsupportedOperationException
String[] arr = {"abc","haha","xixi"}; List<String> list = Arrays.asList(arr); list.add("hiahia");<span style="color:#FF0000;">Exception in thread "main" java.lang.UnsupportedOperationException</span>2.如果数组中的元素是对象,那么转成集合时,直接将数组中的元素作为集合中的元素进行集合存储。
如果数组中的元素是基本类型数值,那么会将该数组作为集合中的元素进行存储。
int[] arr = {31,11,51,61}; List<int[]> list = Arrays.asList(arr); System.out.println(list);》》[[I@544a5ab2] Integer[] arr = {31,11,51,61}; List<Integer> list = Arrays.asList(arr); System.out.println(list);》》[31, 11, 51, 61]集合---------》数组
Collection接口中的toArray()方法
好处:可以对集合中的元素操作的方法进行限定。不允许对其进行增删。
<T> T[]
toArray(T[] a)
返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。 返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。如果指定的数组能容纳该 collection,则返回包含此 collection 元素的数组。否则,将分配一个具有指定数组的运行时类型和此 collection 大小的新数组。
如果指定的数组能容纳 collection,并有剩余空间(即数组的元素比 collection 的元素多),那么会将数组中紧接 collection 尾部的元素设置为null。(只有 在调用者知道此 collection 没有包含任何 null 元素时才能用此方法确定 collection 的长度。)
简单来说:toArray方法需要传入一个指定类型的数组。
长度该如何定义呢?
如果长度小于集合的size,那么该方法会创建一个同类型并和集合相同size的数组。
如果长度大于集合的size,那么该方法就会使用指定的数组,存储集合中的元素,其他位置默认为null。
所以建议,最后长度就指定为,集合的size。
List<String> list = new ArrayList<String>(); list.add("abc1"); list.add("abc2"); list.add("abc3"); String[] arr = list.toArray(new String[list.size()]); System.out.println(Arrays.toString(arr));
- 两个工具类Collections 和Arrays
- Collections和Arrays工具类
- Collections和Arrays工具类
- 黑马程序员-Collections和Arrays工具类
- JAVASE之工具类-----Collections和Arrays
- Java Collections和Arrays工具类剖析
- 工具类:Collections 、Arrays
- 集合工具类 Collections 、Arrays
- Collections与Arrays工具类
- 工具类:collections类和Arrays类整理
- Lesson_for_java_day14--java中的工具类:Collections和Arrays
- 黑马程序员-day17工具类Collections和Arrays
- Java学习笔记-Collections和Arrays工具类
- 黑马程序员--泛型、集合框架工具类:collections和Arrays
- 黑马程序员----集合工具类(Arrays和Collections)
- 泛型、集合框架工具类:collections和Arrays
- 集合(五)工具类Collections和Arrays
- Collections工具类、Arrays工具类
- Servlet 点击计数器
- hrbust 1143 泉水(简单dfs)
- dispatch 调度组的使用
- java多态
- Java的输入和输出
- 两个工具类Collections 和Arrays
- jmeter正则表达式提取器的"?"是什么意思?怎么匹配?
- java连接mysql实现
- Servlet 自动刷新页面
- c/c++练习–13
- 第九周 项目一-猴子选大王(数组版)
- 大数据之hadoop[zookeeper] javaCRUD
- matlab 直方图的求解及归一化直方图
- Servlet 发送电子邮件