java 集合框架:Set、List、Map

40 篇文章 0 订阅
6 篇文章 0 订阅

集合框架:

在这里插入图片描述

集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:

  • 接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象。
  • 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。
  • 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。

除了集合,该框架也定义了几个 Map 接口和类。Map 里存储的是键/值对。尽管 Map 不是集合,但是它们完全整合在集合中。


集合框架体系如图所示:

在这里插入图片描述


集合框架定义了一些接口:

在这里插入图片描述


Set 接口

集合是无序的

还有很多关于Set 的方法的调用,下面就举一个例子:

    public static void main(String[] args) {
        Set set = new HashSet();
        set.add("1");
        set.add("2");
        set.add("3");
        set.add("我爱你");
        set.add("4");
        set.add("5");
        set.add("6");
        // 输出集合的长度
        System.out.println(set.size());
        // 迭代器 循环遍历
        Iterator iter = set.iterator();
        while (iter.hasNext()){
            System.out.println(iter.next());
        }
    }

结果是:
在这里插入图片描述
从结果中可以看出集合是无序的。


List 接口

集合是有序的

实例:

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

//list 集合
public class ListDemo {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("我爱你");
        list.add("5");
        list.add("6");
        list.add("7");
        //输出集合的长度
        System.out.println(list.size());
        // 输出下标为4的元素的值
        System.out.println(list.get(4));
        // 判断集合中有没有这个值
        System.out.println(list.contains("5"));
        // 判断集合是否为空
        System.out.println(list.isEmpty());
        // 输出最后数值为5的下标
        System.out.println(list.lastIndexOf("7"));
        // 判断是否与集合相等
        System.out.println(list.equals(list));
        // 清除集合中的元素
        list.clear();
        LinkedList list1 = new LinkedList();
        list1.add("1");
        list1.add("2");
        list1.add("3");
        list1.add("4");
        list1.add("我爱你");
        list1.add("5");
        list1.add("6");
        list1.add("7");

        // 添加到第一个数
        list1.addFirst("我想你");
        // 添加到最后一个数
        list1.addLast("再见");
        // 把集合作为一个元素添加
        list1.add(list1);
        //  把集合中的元素添加进去
        list1.add(list1);

        Iterator iter = list.iterator();
        while (iter.hasNext()){
            System.out.println(iter.next());
        }

    }

结果是:
在这里插入图片描述


Map 接口

    public static void main(String[] args) {
        Map map = new HashMap();
        map.put(1,"大王叫我来巡山");
        map.put(2,"我把车子开上五环");
        map.put(3,"你比四环多一环");
        map.put(4,"清风徐来");
        map.put(5,"水波不兴");

        System.out.println(map.get(5));

        Set set = map.keySet();
        Collection collection = map.values();
        Set set1 = map.entrySet();

        Iterator iter = set1.iterator();
        while (iter.hasNext()){
            System.out.println(iter.next());
        }
    }

结果是:
在这里插入图片描述


Collections 类是Collection接口的辅助类,用来操作集合的,方法都是静态的。

Arrays 类用来操作数组的,其方法也是静态的。


将数组转换为集合:

import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class ArrayDemo {
    public static void main(String[] args) {
        String [] str = new String[6];
        for (int i = 0; i < str.length ; i++) {
            str[i] = "苏鸡儿"+(i+1);
        }
        //将数组转换为集合
        List list = Arrays.asList(str);
        Iterator iter = list.iterator();
        while (iter.hasNext()){
            System.out.println(iter.next());
        }
    }
}

结果是:
在这里插入图片描述


将集合转换为数组:

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

public class Demo2 {
    public static void main(String[] args) {
        Set set = new HashSet();
        set.add("清风徐来");
        set.add("水波不兴");
        set.add("人面桃花");
        set.add("倾国倾城");
        set.add("哪有分生");
        String [] str = new String[5];
        //将集合转换为数组
        set.toArray(str);
        for (String s : str) {
            System.out.println(s);
        }
    }
}

结果是:
在这里插入图片描述


总结:

  • 集合框架(JCF)的根接口为Collection,有Set、List等子接口,所有集合类均具有一些共同的方法,它们的主要区别在于实现的数据结构不同
  • Map接口用于存储映射关系,其实现类有HashMap和TreeMap等
  • Iterator迭代器能不暴露内部细节的情况下访问集合元素
  • Collections类对集合框架提供了支持
  • Arrays类提供了对数组的操作支持,同时提供了数组到集合的转化方法asList( )

不忘初心,砥砺前行

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值