java集合

本文介绍了Java中的集合框架,包括集合概述、List接口(如ArrayList和LinkedList)、Set接口(如HashSet和TreeSet)以及Map接口(如HashMap和TreeMap)的使用方法。还展示了如何遍历这些接口的不同实现,以及Collections类提供的实用工具方法。
摘要由CSDN通过智能技术生成

1.集合概述

定义

  集合就是一个容器,一个能够动态增长长度的容器。我们可以把多个各种各样的存储对象放到这个容器中。取数组不同的是,数组只能同时存储一种相同类型的数据,并且数组长度也不是理想的,,数组长度一旦定义就无法改变。

  集合给我们在实际应用当中起了很大作用。Java中对于各种数据结构的实现,就是我们用到的集合。

2.集合API

3.集合接口

(1)List

一个有序的集合,可以包含重复的元素。它允许我们精确控制每个元素插入的位置。你可以通过索引(位置)访问元素。ArrayList和LinkedList是List接口的两个主要实现。

(2)Set

一个不允许重复元素的集合。它可以用来去除集合中的重复元素。HashSet、LinkedHashSet和TreeSet是Set接口的主要实现。

(3)Map

一个存储键值对(key-value pairs)的对象。每个键最多只能映射到一个值。HashMap、Hashtable和TreeMap是Map接口的几个实现。

4.List接口迭代

方法一:用for循环遍历。

import java.util.ArrayList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");
        // 遍历列表
        for(String name : names) {
            System.out.println(name);
        }
    }
}

方法二:迭代遍历

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");

        // 使用迭代器遍历列表
        Iterator<String> iterator = names.iterator();
        while (iterator.hasNext()) {
            String name = iterator.next();
            System.out.println(name);
        }
    }
}

5.Set接口迭代

方法一:用for循环

import java.util.HashSet;
import java.util.Set;

public class SetExample {
    public static void main(String[] args) {
        Set<String> fruits = new HashSet<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Apple"); // 重复元素将被忽略

        System.out.println(fruits.size()); // 输出元素数量,重复的"Apple"只计算一次
    }
}

方法二:用迭代器遍历

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class SetExample {
    public static void main(String[] args) {
        Set<String> fruits = new HashSet<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Apple"); // 重复元素将被忽略

        // 使用迭代器遍历Set
        Iterator<String> iterator = fruits.iterator();
        while (iterator.hasNext()) {
            String fruit = iterator.next();
            System.out.println(fruit);
        }

        // 输出元素数量,重复的"Apple"只计算一次
        System.out.println(fruits.size());
    }
}

6.Map接口及其实现类

Map概念: 
将键映射到值的对象, 一个映射不能包含重复的键 ,每个键最多只能映射到一个值

Map实现类 
(1)HashMap: 

HashMap中元素的key值不能重复, 排列顺序是不固定的,可以存储一个为null的键
(2)TreeMap:TreeMap中所有的元素都保持着某种固定的顺序,如果需要得到一个有序
的Map就应该使用TreeMap,key值所在类必须实现Comparable接口。
(3)Hashtable:实现了同步。不能存储为null的键。

7.Map(双列)接口迭代

方法一:根据键找值, 获取所有键的集合 ,遍历键的集合,获取到每一个键 ,根据键找值

//方法一:先拿到所有键,遍历键,根据键找值
        Set<String> keySet=hashMap.keySet();
        for (String key:keySet) {
            System.out.println(key+"="+hashMap.get(key));
        }

方法二:
根据键值对对象找键和值 , 获取所有键值对对象的集合 ,遍历键值对对象的集合,获取到每一个键值对对象 ,根据键值对对象找键和值

 //方法二:
        Set<Map.Entry<String,String>> entries =hashMap.entrySet();
        for (Map.Entry entry:entries) {
            System.out.println(entry.getKey()+":"+entry.getValue());
        }

8.Collections类

是一个工具类,Collections是集合类的工具类,与数组的工具类Arrays类似.

addAl l(Collection<? super T> c, T... elements);
binarySearch(List<? extends Comparable<? super T>> l ist, T key)
sort(List<T> l ist)
sort(List<T> l ist, Comparator<? super T> c)
swap(List<?> l ist, int i, int j)
copy(List<? super T> dest, List<? extends T> src) ; 注意 dest size 需大于等于 src.size
fi l l(List<? super T> l ist, T obj)
max(Col lection<? extends T> col l)
min(Col lection<? extends T> col l)
replaceAl l(List<T> l ist, T oldVal, T newVal)
reverse(List<?> l ist)
shuffle(List<?> l ist) 随机排序
copy(dest,src) 集合复制

9.总结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值