大理建设工程信息网站,鼎湖网站建设公司,asp网站 攻击,奢侈品网站策划方案Collections 工具类常用方法:
排序查找,替换操作同步控制(不推荐#xff0c;需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合)
排序操作
void reverse(List list)//反转
void shuffle(List list)//随机排序
void sort(List list)//按自然排序的升序排序
void sort(L…Collections 工具类常用方法:
排序查找,替换操作同步控制(不推荐需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合)
排序操作
void reverse(List list)//反转
void shuffle(List list)//随机排序
void sort(List list)//按自然排序的升序排序
void sort(List list, Comparator c)//定制排序由Comparator控制排序逻辑
void swap(List list, int i , int j)//交换两个索引位置的元素
void rotate(List list, int distance)//旋转。当distance为正数时将list后distance个元素整体移到前面。当distance为负数时将 list的前distance个元素整体移到后面。
示例代码: ArrayListInteger arrayList new ArrayListInteger();arrayList.add(-1);arrayList.add(3);arrayList.add(3);arrayList.add(-5);arrayList.add(7);arrayList.add(4);arrayList.add(-9);arrayList.add(-7);System.out.println(原始数组:);System.out.println(arrayList);// void reverse(List list)反转Collections.reverse(arrayList);System.out.println(Collections.reverse(arrayList):);System.out.println(arrayList);Collections.rotate(arrayList, 4);System.out.println(Collections.rotate(arrayList, 4):);System.out.println(arrayList);// void sort(List list),按自然排序的升序排序Collections.sort(arrayList);System.out.println(Collections.sort(arrayList):);System.out.println(arrayList);// void shuffle(List list),随机排序Collections.shuffle(arrayList);System.out.println(Collections.shuffle(arrayList):);System.out.println(arrayList);// void swap(List list, int i , int j),交换两个索引位置的元素Collections.swap(arrayList, 2, 5);System.out.println(Collections.swap(arrayList, 2, 5):);System.out.println(arrayList);// 定制排序的用法Collections.sort(arrayList, new ComparatorInteger() {Overridepublic int compare(Integer o1, Integer o2) {return o2.compareTo(o1);}});System.out.println(定制排序后);System.out.println(arrayList);
查找,替换操作
int binarySearch(List list, Object key)//对List进行二分查找返回索引注意List必须是有序的
int max(Collection coll)//根据元素的自然顺序返回最大的元素。 类比int min(Collection coll)
int max(Collection coll, Comparator c)//根据定制排序返回最大元素排序规则由Comparatator类控制。类比int min(Collection coll, Comparator c)
void fill(List list, Object obj)//用指定的元素代替指定list中的所有元素。
int frequency(Collection c, Object o)//统计元素出现次数
int indexOfSubList(List list, List target)//统计target在list中第一次出现的索引找不到则返回-1类比int lastIndexOfSubList(List source, list target).
boolean replaceAll(List list, Object oldVal, Object newVal), 用新元素替换旧元素
示例代码 ArrayListInteger arrayList new ArrayListInteger();arrayList.add(-1);arrayList.add(3);arrayList.add(3);arrayList.add(-5);arrayList.add(7);arrayList.add(4);arrayList.add(-9);arrayList.add(-7);ArrayListInteger arrayList2 new ArrayListInteger();arrayList2.add(-3);arrayList2.add(-5);arrayList2.add(7);System.out.println(原始数组:);System.out.println(arrayList);System.out.println(Collections.max(arrayList):);System.out.println(Collections.max(arrayList));System.out.println(Collections.min(arrayList):);System.out.println(Collections.min(arrayList));System.out.println(Collections.replaceAll(arrayList, 3, -3):);Collections.replaceAll(arrayList, 3, -3);System.out.println(arrayList);System.out.println(Collections.frequency(arrayList, -3):);System.out.println(Collections.frequency(arrayList, -3));System.out.println(Collections.indexOfSubList(arrayList, arrayList2):);System.out.println(Collections.indexOfSubList(arrayList, arrayList2));System.out.println(Collections.binarySearch(arrayList, 7):);// 对List进行二分查找返回索引List必须是有序的Collections.sort(arrayList);System.out.println(Collections.binarySearch(arrayList, 7));
同步控制
Collections提供了多个synchronizedXxx()方法·该方法可以将指定集合包装成线程同步的集合从而解决多线程并发访问集合时的线程安全问题。
我们知道 HashSetTreeSetArrayList,LinkedList,HashMap,TreeMap 都是线程不安全的。Collections提供了多个静态方法可以把他们包装成线程同步的集合。
最好不要用下面这些方法效率非常低需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合。
方法如下
synchronizedCollection(CollectionT c) //返回指定 collection 支持的同步线程安全的collection。
synchronizedList(ListT list)//返回指定列表支持的同步线程安全的List。
synchronizedMap(MapK,V m) //返回由指定映射支持的同步线程安全的Map。
synchronizedSet(SetT s) //返回指定 set 支持的同步线程安全的set。
Collections还可以设置不可变集合提供了如下三类方法
emptyXxx(): 返回一个空的、不可变的集合对象此处的集合既可以是List也可以是Set还可以是Map。
singletonXxx(): 返回一个只包含指定对象只有一个或一个元素的不可变的集合对象此处的集合可以是ListSetMap。
unmodifiableXxx(): 返回指定集合对象的不可变视图此处的集合可以是ListSetMap。
上面三类方法的参数是原有的集合对象返回值是该集合的”只读“版本。
示例代码 ArrayListInteger arrayList new ArrayListInteger();arrayList.add(-1);arrayList.add(3);arrayList.add(3);arrayList.add(-5);arrayList.add(7);arrayList.add(4);arrayList.add(-9);arrayList.add(-7);HashSetInteger integers1 new HashSet();integers1.add(1);integers1.add(3);integers1.add(2);Map scores new HashMap();scores.put(语文 , 80);scores.put(Java , 82);//Collections.emptyXXX();创建一个空的、不可改变的XXX对象ListObject list Collections.emptyList();System.out.println(list);//[]SetObject objects Collections.emptySet();System.out.println(objects);//[]MapObject, Object objectObjectMap Collections.emptyMap();System.out.println(objectObjectMap);//{}//Collections.singletonXXX();ListArrayListInteger arrayLists Collections.singletonList(arrayList);System.out.println(arrayLists);//[[-1, 3, 3, -5, 7, 4, -9, -7]]//创建一个只有一个元素且不可改变的Set对象SetArrayListInteger singleton Collections.singleton(arrayList);System.out.println(singleton);//[[-1, 3, 3, -5, 7, 4, -9, -7]]MapString, String nihao Collections.singletonMap(1, nihao);System.out.println(nihao);//{1nihao}//unmodifiableXXX();创建普通XXX对象对应的不可变版本ListInteger integers Collections.unmodifiableList(arrayList);System.out.println(integers);//[-1, 3, 3, -5, 7, 4, -9, -7]SetInteger integers2 Collections.unmodifiableSet(integers1);System.out.println(integers2);//[1, 2, 3]MapObject, Object objectObjectMap2 Collections.unmodifiableMap(scores);System.out.println(objectObjectMap2);//{Java82, 语文80}//添加出现异常java.lang.UnsupportedOperationException
// list.add(1);
// arrayLists.add(arrayList);
// integers.add(1);