栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java--Collections--使用/常用方法/实例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java--Collections--使用/常用方法/实例

原文网址:Java--Collections--使用/常用方法/实例_IT利刃出鞘的博客-CSDN博客

简介

        本文用示例介绍Java中的Objects的用法。

        Java中的Collections是操作对象的工具类,有如下功能:排序、同步控制、生成不可变集合等。

排序

(主要针对List接口相关)

方法

说明

reverse(List list)

反转指定List集合中元素的顺序

shuffle(List list)

对List中的元素进行随机排序(洗牌)

sort(List list)

对List里的元素根据自然升序排序

sort(List list, Comparator c)

自定义比较器进行排序

swap(List list, int i, int j)

将指定List集合中i处元素和j出元素进行交换

rotate(List list, int distance)

将所有元素向右移位指定长度。若distance等于size那么结果不变

实例

package org.example.a;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Demo {
    public static void main(String[] args)  {
        List list = Arrays.asList("a", "b", "c", "d", "e");
        System.out.println("原始顺序:tt" + list);

        list = Arrays.asList("a", "b", "c", "d", "e");
        Collections.reverse(list);
        System.out.println("reverse后顺序:t" + list);

        list = Arrays.asList("a", "b", "c", "d", "e");
        Collections.shuffle(list);
        System.out.println("shuffle后顺序:t" + list);

        list = Arrays.asList("a", "b", "c", "d", "e");
        Collections.swap(list, 1, 3);
        System.out.println("swap后顺序:t" + list);

        list = Arrays.asList("a", "b", "c", "d", "e");
        Collections.sort(list);
        System.out.println("sort后顺序:t" + list);

        list = Arrays.asList("a", "b", "c", "d", "e");
        Collections.rotate(list, 1);
        System.out.println("rotate后顺序:t" + list);
    }
}

执行结果

原始顺序:	[a, b, c, d, e]
reverse后顺序:	[e, d, c, b, a]
shuffle后顺序:	[b, e, a, c, d]
swap后顺序:	[a, d, c, b, e]
sort后顺序:	[a, b, c, d, e]
rotate后顺序:	[e, a, b, c, d]
查找/替换

(主要针对Collection接口相关)

方法

说明

binarySearch(List list, Object key)

使用二分搜索法,以获得指定对象在List中的索引,前提是集合已排序

max(Collection coll)

返回最大元素

max(Collection coll, Comparator comp)

根据自定义比较器,返回最大元素

min(Collection coll)

返回最小元素

min(Collection coll, Comparator comp)

根据自定义比较器,返回最小元素

fill(List list, Object obj)

使用指定对象填充

frequency(Collection Object o)

返回指定集合中指定对象出现的次数

replaceAll(List list, Object old, Object new)

替换

实例

package org.example.a;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Demo {
    public static void main(String[] args)  {
        List list = Arrays.asList("a", "b", "c", "d", "e");
        System.out.println("原始list:" + list);
        System.out.println("max:" + Collections.max(list));
        System.out.println("min:" + Collections.min(list));
        System.out.println("frequency:" + Collections.frequency(list, "a"));
        Collections.replaceAll(list, "a", "aa");
        System.out.println("replaceAll之后:" + list);

        // 如果binarySearch的对象没有排序的话,搜索结果是不确定的
        Collections.shuffle(list);
        System.out.println("sort之前:" + Collections.binarySearch(list, "c"));

        // sort之后,结果出来了
        Collections.sort(list);
        System.out.println("sort之后:" + Collections.binarySearch(list, "c"));

        Collections.fill(list, "A");
        System.out.println("fill:" + list);
    }
}

执行结果

原始list:[a, b, c, d, e]
max:e
min:a
frequency:1
replaceAll之后:[aa, b, c, d, e]
sort之前:-1
sort之后:2
fill:[A, A, A, A, A]
同步控制

简介

        Collections工具类中提供了多个synchronizedXxx方法,该方法返回指定集合对象对应的同步对象,从而解决多线程并发访问集合时线程的安全问题。HashSet、ArrayList、HashMap都是线程不安全的,如果需要考虑同步,则使用这些方法。这些方法主要有:synchronizedSet、synchronizedSortedSet、synchronizedList、synchronizedMap、synchronizedSortedMap。

        特别需要指出的是,在使用迭代方法遍历集合时需要手工同步返回的集合。

  Map m = Collections.synchronizedMap(new HashMap());
      ...
  Set s = m.keySet();  // Needn't be in synchronized block
      ...
  synchronized (m) {  // Synchronizing on m, not s
      Iterator i = s.iterator(); // Must be in synchronized block
      while (i.hasNext())
          foo(i.next());
  }
 不可变集合

方法

说明

emptyXxx()

或EMPTY_XXX

或EmptyXxx()

返回一个空的不可变的集合对象。

只读的空LIST 集合:Collections.EMPTY_LIST,Collections.emptyList(),new EmptyList();

只读的空Set 集合:  Collections.EMPTY_SET,Collections.emptySet(), new EmptySet();

只读的空MAP集合: Collections.EMPTY_MAP,Collections.emptyMap(), new EmptyMap();

singletonXxx()

返回一个只包含指定对象的,不可变的集合对象

unmodifiableXxx()

返回指定集合对象的不可变视图

实例

package org.example.a;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Demo {
    public static void main(String[] args)  {
        List list = Arrays.asList("a", "b", "c", "d", "e");
        System.out.println("list:" + list);
        List unmodList = Collections.unmodifiableList(list);
        unmodList.add("fg");
        System.out.println("unmodiList:" + unmodList);
    }
}

执行结果

list:[a, b, c, d, e]
Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.Collections$UnmodifiableCollection.add(Collections.java:1055)
	at org.example.a.Demo.main(Demo.java:12)
其他

方法

说明

disjoint(Collection c1, Collection c2)

如果两个指定 collection 中没有相同的元素,则返回 true。

addAll(Collection c, T... a)

将所有指定元素添加到指定 collection 中。示范:

Collections.addAll(flavors, "Peaches 'n Plutonium", "Rocky Racoon");

Comparator reverseOrder(Comparator cmp)

返回一个比较器,它强行反转指定比较器的顺序。如果指定比较器为 null,则此方法等同于 reverseOrder()(换句话说,它返回一个比较器,该比较器将强行反转实现 Comparable 接口那些对象 collection 上的自然顺序)。

实例

package org.example.a;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Demo {
    public static void main(String[] args)  {
        List list = Arrays.asList("a", "b", "c", "d", "e");
        List list1 = new ArrayList<>();
        List list2 = new ArrayList<>();
        Collections.addAll(list1, "fg", "hi");
        Collections.addAll(list2, "e", "hi");

        System.out.println(Collections.disjoint(list, list1));
        System.out.println(Collections.disjoint(list, list2));

        Collections.sort(list, Collections.reverseOrder());
        System.out.println(list);
    }
}

执行结果

true
false
[e, d, c, b, a]
其他网址

java中Collections常用方法总结(包括sort,copy,reverse等)_Shiny0815的博客-CSDN博客

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/356599.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号