Java Collections

原文:https://www.studytonight.com/java/collections-in-collection-framework.php

Java Collections 类是集合框架的一部分。这个类被设计为提供搜索、排序、复制等方法。它只包含对集合进行操作或返回集合的内置静态方法。它包含对集合进行操作的多态算法。

该类位于 java.util 包中。这个类的声明如下。

集合类声明

public class Collections extends Object

它继承了 Object 类,如果对象为空,这个类的所有方法都会抛出一个 NullPointerException

收集方法

此表包含集合类的常用方法。

| 方法 | 描述 | | 阿德拉() | 它将所有指定的元素添加到指定的集合中。 | | binarySearch() | 它在列表中搜索指定的对象,并返回它们在排序列表中的位置。 | | 复制() | 它将一个列表中的所有元素复制到另一个列表中。 | | 不相交() | 如果两个指定的集合没有共同的元素,则返回 true。 | | emptyEnumeration() | 它获取一个没有元素的枚举。 | | emptyIterator() | 它获取一个没有元素的迭代器。 | | emptylist() | 它获取一个没有元素的列表。 | | emptyListIterator() | 它获取一个没有元素的列表迭代器。 | | emptyMap() | 它返回一个不可变的空映射。 | | emptyNavigableMap() | 它返回一个不可变的空导航映射。 | | emptyNavigableSet() | 它返回一个本质上不可变的空的可导航集合。 | | emptyset() | 它返回没有元素的集合。 | | emptySortedMap() | 它返回一个不可变的空排序图。 | | emptySortedSet() | 它用于获取没有元素的排序集。 | | 枚举() | 它用于获取指定集合上的枚举。 | | 填充() | 它用于用指定的元素替换指定列表中的所有元素。 | | 列表() | 它用于获取一个ArrayList,该列表包含指定枚举返回的元素,这些元素按枚举返回的顺序排列。 | | 最大值() | 它用于获取给定集合的最大值。 | | 最小值() | 它用于获取给定集合的最小值。 | | nCopies() | 它用于获取由指定对象的 n 个副本组成的不可变列表。 | | replaceAll() | 它用于将列表中一个指定值的所有出现替换为另一个指定值。 | | 反向() | 它用于反转指定列表中元素的顺序。 | | reverseOrder() | 它用于获取Comparator,该Comparator对集合施加与自然排序相反的排序。 | | 旋转() | 它用于将指定列表中的元素旋转给定的距离。 | | 洗牌() | 它用于使用默认随机性对指定的列表元素进行随机重新排序。 | | 排序() | 它用于按升序对集合的指定列表中的元素进行排序。 | | 交换() | 它用于交换指定列表中指定位置的元素。 | | synchronizedCollection() | 它用于获取由指定集合支持的同步(线程安全)集合。 | | synchronizedlist() | 它用于获取由指定列表支持的同步(线程安全)集合。 | | synchronizedMap() | 它用于获取由指定映射支持的同步(线程安全)映射。 | | synchronizedNavigableMap() | 它用于获取由指定的可导航映射支持的同步(线程安全)可导航映射。 | | synchronizedNavigableSet() | 它用于获取由指定的可导航集支持的同步(线程安全)可导航集。 | | synchronizedSet() | 它用于获取由指定集支持的同步(线程安全)集。 | | synchronizedSortedMap() | 它用于获取由指定排序映射支持的同步(线程安全)排序映射。 | | synchronizedSortedSet() | 它用于获取由指定排序集支持的同步(线程安全)排序集。 |

示例:排序列表

在这个例子中,我们使用的是 Collections 类的sort()方法,用于对集合的元素进行排序。这里我们使用存储Integer类型对象和排序的ArrayList类。

  import java.util.*;  
public class Demo {  
    public static void main(String a[]){
      // Creating ArrayList
        ArrayList<Integer> list = new ArrayList<>();
        // Adding elements
        list.add(100);  
        list.add(2);  
        list.add(66); 
        list.add(22);
        list.add(10);
        // Displaying list
        System.out.println(list);
        // Sorting list
        Collections.sort(list);
        // Displaying sort data
        System.out.println(list);
    }  
}

[100, 2, 66, 22, 10] [2, 10, 22, 66, 100]

示例:查找最小和最大元素

collections 类提供了两种方法max()min(),可用于从集合中获取最大值和最小值。见下面的例子。

  import java.util.*;  
public class Demo {  
    public static void main(String a[]){
      // Creating ArrayList
        ArrayList<Integer> list = new ArrayList<>();
        // Adding elements
        list.add(100);  
        list.add(2);  
        list.add(66); 
        list.add(22);
        list.add(10);
        // Displaying list
        System.out.println(list);
        // Find min element
        int min = Collections.min(list);
        // Find max element
        int max = Collections.max(list);
        // Displaying data
        System.out.println("Minimum element : "+ min);
        System.out.println("Maximum element : "+ max);
    }  
}

[100,2,66,22,10]最小元素:2 最大元素:100

示例:交换元素

为了交换元素,我们不需要编写逻辑代码。Collections 类提供了内置的交换方法,可用于将元素从集合中的一个位置交换到另一个位置。swap()方法取三个参数:第一个是对象的引用,第二个是第一个元素的索引,第三个是要交换的第二个元素的索引。见下面的例子。

  import java.util.*;  
public class Demo {  
    public static void main(String a[]){
      // Creating ArrayList
        ArrayList<Integer> list = new ArrayList<>();
        // Adding elements
        list.add(100);  
        list.add(2);  
        list.add(66); 
        list.add(22);
        list.add(10);
        // Displaying list
        System.out.println(list);
        // Swapping elements
        Collections.swap(list, 0, 4); // 100 is swapped by 10
        System.out.println("List after swapping : "+ list);
    }  
}

[100,2,66,22,10]交换后的列表:[10,2,66,22,100]

示例:反转列表

Collections 类提供了一个静态方法reverse(),用于以相反的顺序获取一个集合。在下面的例子中,我们使用reverse()方法以相反的顺序获得列表。

  import java.util.*;  
public class Demo {  
    public static void main(String a[]){
      // Creating ArrayList
        ArrayList<Integer> list = new ArrayList<>();
        // Adding elements
        list.add(100);  
        list.add(2);  
        list.add(66); 
        list.add(22);
        list.add(10);
        // Displaying list
        System.out.println(list);
        // Reverse the list
        Collections.reverse(list);
        // Displaying data
        System.out.println("List in reverse order "+list);
    }  
}

[100,2,66,22,10]按相反顺序列出[10,22,66,2,100]