JavaSE 集合入门

JavaSE 集合入门


目录

集合是什么?有什么用?

Java 集合是指 JDK 提供的一系列接口、类。(见下文“1、集合的继承图(常用部分)”)

Java 集合的作用是存放数据。可以存放数量不确定的数据(与数组相比)。可以实现常用的数据结构,比如:线性表、链表、栈、队列、树等。

注意1:Java集合里只能保存对象,实际上是保存对象的引用变量。所以将对象添加到集合中后,如果在集合外对该对象进行修改,集合中保存的该对象也会同步修改。

返回目录


集合怎么用?

1、集合的继承图(常用部分)

(1)Java 集合由 Collection 集合、Map 集合、Collections 工具类组成,都在 java.util 包下。

(2)Collection 接口继承了 Iterable 接口,表示该接口的对象可以通过迭代器进行遍历。

(3)Collection 集合包含以下 3 个集合:List 集合、Set 集合、Queue 集合。

List 集合是有序、元素可重复的集合,实现了线性表、链表等数据结构;

Set 集合是无序、元素不可重复的集合;

Queue 集合实现了队列(双端队列)、栈等数据结构。

(4)Map 集合用于保存具有映射关系的数据。

(5)Collections 工具类,封装了一些可以操作集合的静态方法。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

返回目录


2、Collection 接口
  • 2-1 常用方法
public interface Collection<E> extends Iterable<E> {

    //向集合中添加元素,如果集合对象被添加操作改变了,返回 true。
    boolean add(E e);
    boolean addAll(Collection<? extends E> c);

    // 返回集合中元素的数量
    int size();

    // 判断集合是否为空
    boolean isEmpty();
    
    // 只删除第一个符合条件的元素,如果删除了元素,返回 true。
    boolean remove(Object o);
    // 从集合中删除集合 c 中的所有元素,有多个符合条件的相同元素,都删。
    boolean removeAll(Collection<?> c);
    // 清空集合
    void clear();
    // 从当前集合中,删除集合c不包含的元素。相当于留下当前集合和集合c的交集。
    boolean retainAll(Collection<?> c);
    
    // 判断集合是否包含指定的元素
    boolean contains(Object o);
    // 判断集合是否包含集合 c 中的所有的元素
    boolean containsAll(Collection<?> c);

    // 返回一个迭代器对象,用于遍历集合
    Iterator<E> iterator();
    
    // 把集合转换成数组。返回 Object[] 数组。不能强制类型转换。
    Object[] toArray();
    // 把集合转换成数组。返回指定类型数组。
    <T> T[] toArray(T[] a);
}

返回目录

  • 2-2 代码示例
  • 遍历

Collection<Integer> col = new ArrayList<>();
col.add(1);
col.add(2);
col.add(3);
// 1、迭代器遍历
Iterator<Integer> it = col.iterator();
while (it.hasNext()) {
    Integer num = it.next();
    System.out.println(num); // 1 2 3
}

// 2、foreach 遍历
for(Integer num : col){
    System.out.println(num); // 1 2 3
}
  • 集合转数组
Collection<Integer> col = new ArrayList<>();
col.add(1);
col.add(2);
col.add(3);
// 1、无参方法,返回 Object[] 数组
Object[] objs = col.toArray();
System.out.println(Arrays.toString(objs)); // [1, 2, 3]
// 不能进行强制类型转换,会报异常 ClassCastException
// Integer[] nums = (Integer[])col.toArray();

// 2、有参方法,返回指定类型数组
Integer[] nums = col.toArray(new Integer[0]);
System.out.println(Arrays.toString(nums)); // [1, 2, 3]

返回目录


3、Iterable 接口和 Iterator 接口

Collection 接口实现了 Iterable 接口,Iterable 接口的功能有2个:

(1)实现该接口的类,可以使用迭代器对象进行遍历;

(2)实现该接口的类,可以使用 foreach 循环进行遍历。

  • 3-1 常用方法
//  Iterable 接口
public interface Iterable<T> {
    // 返回一个迭代器对象
    Iterator<T> iterator();
}

// Iterator 接口
public interface Iterator<E> {
    // 判断是否有下一个元素
    boolean hasNext();
    // 返回下一个元素
    E next();
    // 删除刚刚遍历过的元素
    default void remove() {...}
}
  • 3-2 代码示例
  • 迭代器遍历

Collection<String> col = new ArrayList<>();
col.add("a");
col.add("b");
col.add("c");
//迭代器遍历
Iterator<String> it = col.iterator();
while (it.hasNext()) {
    String str = it.next();
    System.out.println(str);
}
  • foreach 遍历
Collection<String> col = new ArrayList<>();
col.add("a");
col.add("b");
col.add("c");
// foreach 遍历
for (String s : col) {
    System.out.println(s);
}

返回目录


4、Collections 类

​ Collections 类是一个工具类,用于操作集合。以下是常用方法(静态方法)。

public class Collections {
    
    // 1、排序操作
    // 按照元素的自然顺序,进行升序排序
    // 自然顺序:Comparable 接口的 compareTo() 方法。详见《JavaSE 比较器接口》
    public static void sort(List list) {...}
    // 按照指定顺序,进行排序
    public static void sort(List list, Comparator c) {...}
	// 反转集合顺序
    public static void reverse(List list) {...}
    // 随机排序(洗牌)
    public static void shuffle(List list) {...}
    // 交换元素顺序
    public static void swap(List list, int i, int j) {...}

    // 2、查找、替换
    // 二分查找。使用该方法,必须保证 List 集合有序。
    public static int binarySearch(List list, T key) {...}
    // 查找最小元素
    public static T min(Collection<? extends T> coll) {...}
    public static T min(Collection coll, Comparator comp) {...}
    // 查找最大元素
    public static T max(Collectio coll) {...}
    public static T max(Collectio coll, Comparato comp) {...}
    // 用新值替换集合中的所有旧值
    public static <T> boolean replaceAll(List<T> list, T oldVal, T newVal) {...}
    // 返回指定元素的出现次数。
    public static int frequency(Collection c, Object o) {...}
    // 使用指定元素,替换集合中的所有元素。
    public static void fill(List list, T obj) {...}
    
    // 3、同步控制
    // 返回线程安全的集合对象
    public static Collection synchronizedCollection(Collection c) {...}
    public static List synchronizedList(List list) {...}
    public static Set synchronizedSet(Set s) {...}
    public static Map synchronizedMap(Map m) {...}
}

返回目录


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值