java collections 算法_收集算法(Collection Algorithms)

收集算法(Collection Algorithms)

集合框架定义了几种可应用于集合和映射的算法。

这些算法在Collections类中定义为静态方法。 有些方法可能会抛出ClassCastException ,当尝试比较不兼容的类型时会发生这种情况,或者在尝试修改不可修改的集合时发生UnsupportedOperationException 。

集合框架算法中定义的方法总结在下表中 -Sr.No.方法和描述

1static int binarySearch(List list, Object value, Comparator c)

根据c搜索列表中的值。 返回列表中值的位置,如果未找到值,则返回-1。

2static int binarySearch(List list, Object value)

在列表中搜索值。 列表必须排序。 返回列表中值的位置,如果未找到值,则返回-1。

3static void copy(List list1, List list2)

将list2的元素复制到list1。

4static Enumeration enumeration(Collection c)

返回c的枚举。

5static void fill(List list, Object obj)

将obj分配给列表的每个元素。

6static int indexOfSubList(List list, List subList)

搜索列表中第一次出现的subList。 返回第一个匹配的索引,如果未找到匹配则返回.1。

7static int lastIndexOfSubList(List list, List subList)

搜索列表中最后一次出现的subList。 返回最后一个匹配的索引,如果未找到匹配则返回.1。

8static ArrayList list(Enumeration enum)

返回包含枚举元素的ArrayList。

9static Object max(Collection c, Comparator comp)

返回由comp确定的c中的最大元素。

10static Object max(Collection c)

返回由自然顺序确定的c中的最大元素。 无需对集合进行排序。

11static Object min(Collection c, Comparator comp)

返回由comp确定的c中的最小元素。 无需对集合进行排序。

12static Object min(Collection c)

返回c中的最小元素,由自然顺序确定。

13static List nCopies(int num, Object obj)

返回包含在不可变列表中的obj的num个副本。 num必须大于或等于零。

14static boolean replaceAll(List list, Object old, Object new)

用列表中的new替换所有旧的old。 如果至少发生一次替换,则返回true。 否则返回false。

15static void reverse(List list)

反转列表中的序列。

16static Comparator reverseOrder( )

返回反向比较器。

17static void rotate(List list, int n)

将列表向右旋转n位置。 要向左旋转,请对n使用负值。

18static void shuffle(List list, Random r)

通过使用r作为随机数源来随机化(即,随机化)列表中的元素。

19static void shuffle(List list)

随机播放(即随机化)列表中的元素。

20static Set singleton(Object obj)

将obj作为不可变集返回。 这是将单个对象转换为集合的简单方法。

21static List singletonList(Object obj)

将obj作为不可变列表返回。 这是将单个对象转换为列表的简便方法。

22static Map singletonMap(Object k, Object v)

将键/值对k/v作为不可变映射返回。 这是将单个键/值对转换为地图的简便方法。

23static void sort(List list, Comparator comp)

按comp确定的列表元素排序。

24static void sort(List list)

按其自然顺序确定列表元素的排序。

25static void swap(List list, int idx1, int idx2)

在idx1和idx2指定的索引处交换列表中的元素。

26static Collection synchronizedCollection(Collection c)

返回由c支持的线程安全集合。

27static List synchronizedList(List list)

返回由list支持的线程安全列表。

28static Map synchronizedMap(Map m)

返回由m支持的线程安全映射。

29static Set synchronizedSet(Set s)

返回由s支持的线程安全集。

30static SortedMap synchronizedSortedMap(SortedMap sm)

返回由sm支持的线程安全的有序集。

31static SortedSet synchronizedSortedSet(SortedSet ss)

返回由ss支持的线程安全集。

32static Collection unmodifiableCollection(Collection c)

返回由c支持的不可修改的集合。

33static List unmodifiableList(List list)

返回列表支持的不可修改列表。

34static Map unmodifiableMap(Map m)

返回由m支持的不可修改的映射。

35static Set unmodifiableSet(Set s)

返回由s支持的不可修改集。

36static SortedMap unmodifiableSortedMap(SortedMap sm)

返回由sm支持的不可修改的有序映射。

37static SortedSet unmodifiableSortedSet(SortedSet ss)

返回由ss支持的不可修改的有序集。

例子 (Example)

以下是一个示例,演示了各种算法。import java.util.*;

public class AlgorithmsDemo {

public static void main(String args[]) {

// Create and initialize linked list

LinkedList ll = new LinkedList();

ll.add(new Integer(-8));

ll.add(new Integer(20));

ll.add(new Integer(-20));

ll.add(new Integer(8));

// Create a reverse order comparator

Comparator r = Collections.reverseOrder();

// Sort list by using the comparator

Collections.sort(ll, r);

// Get iterator

Iterator li = ll.iterator();

System.out.print("List sorted in reverse: ");

while(li.hasNext()) {

System.out.print(li.next() + " ");

}

System.out.println();

Collections.shuffle(ll);

// display randomized list

li = ll.iterator();

System.out.print("List shuffled: ");

while(li.hasNext()) {

System.out.print(li.next() + " ");

}

System.out.println();

System.out.println("Minimum: " + Collections.min(ll));

System.out.println("Maximum: " + Collections.max(ll));

}

}

这将产生以下结果 -

输出 (Output)List sorted in reverse: 20 8 -8 -20

List shuffled: 20 -20 8 -8

Minimum: -20

Maximum: 20

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值