Java集合框架

定义
集合框架是一个用来代表和操纵集合的统一架构。

一、集合框架

在这里插入图片描述集合框架只有三个组件:Map、List和Set,其余的,要么是具体实现类、要么是延伸类。

用一张图来解释Map是无序的、List是有序的、Set是无序了。
在这里插入图片描述

二、ArrayList和LinkedList

ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。

ArrayList 继承了 AbstractList ,并实现了 List 接口。

ArrayList具有以下特点:

  1. 大小是可变的,是自动增长的。可以动态的增加或减少元素。
  2. 实现了IColletion和IList接口。
  3. 它是非同步的集合类。
  4. 元素可以重复.

LinkedList类用于创建链表数据结构对象。
它继承 AbstractSequentialList类并实现了List、Queue接 口。 跟ArrayList一样,LinkedList也是实现了List接口, 这说明可以根据索引来查询集合内的元素。不过, LinkedList和ArrayList的区别也很明显,由于 LinkedList是实现了双向循环链表,所以元素可以很 快捷的被插入或删除,但是,由于链表的特性,如果 对LinkedList做查询,那么效率也非常低。

package sc.work;

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

public class ListDemo {
    public static void main(String[] args) {
        List list = new ArrayList();
        LinkedList list1 = new LinkedList();

        //添加这个数
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");

        list1.add("5");
        list1.add("6");
        list1.add("7");
        list1.add("8");

        //添加到第一个数
        list1.addFirst("0");
        //添加到最后一个数
        list1.addLast("9");
        //添加整个整个列表
        list.addAll(list);
        list.add(list);
        //判断是否存在这个值
        System.out.println("判断是否存在5这个值:"+list.contains(5));
        //列表长度
        System.out.println("list的长度是:"+list.size());
        //判断两个列表是否相等
        System.out.println("list和list1是否相等:"+list.equals(list1));
        Iterator it = list.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }
        Iterator it1 = list1.iterator();
        while (it1.hasNext()){
            System.out.println(it1.next());
        }
    }
}

在这里插入图片描述

三、HashMap

  • HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
  • HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。
  • HashMap 是无序的,即不会记录插入的顺序。
  • HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。

在这里插入图片描述

package sc.work;

import java.util.*;

public class MapDemo {
    public static void main(String[] args) {
        Map map = new HashMap();
        Map map1 = new LinkedHashMap();
        map.put(1,"sc");
        map.put(2,"sc1");
        map.put(3,"sc2");
        map.put(4,"sc4");

        map1.put(1,"sc5");
        map1.put(1,"sc6");
        map1.put(1,"sc7");
        map1.put(1,"sc8");

        //判断数组是否为空
        System.out.println(map1.isEmpty());

        //查找键值为1的元素
        System.out.println(map.get(1));
        Set s = map.keySet();
        Collection c = map.values();
        Set s1 = map.entrySet();

        //循环遍历
        Iterator it = s1.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }

    }
}

在这里插入图片描述

四、Set

Set是无序的,所以我们平常用Set的时候比较少,基本用List代替,但特殊情况下也能用到Set。

package sc.work;

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

public class SetDemo {
    public static void main(String[] args) {
        Set set = new HashSet();
        set.add("1");
        set.add("2");
        set.add("布尔");
        set.add("3");
        set.add("偶尔");
        set.add("伊尔");
        set.add("4");
        set.add("5");
        set.add("我局");
        System.out.println(set.size());
        set.remove("3");
        Iterator it = set.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }

    }
}

在这里插入图片描述

五、Iterator

  • Iterator叫做“迭代器”,它提供一种方法访问一个 容器(container)对象中各个元素,而又不需暴露 该对象的内部细节 。
  • 由于Collection接口继承了Iterator,所以所有集合 对象都可以被迭代, Collection接口内定义了 iterator()方法,能获得一个Iterator迭代器,从而实 现对集合的迭代。
Set set = map.keySet();
        Iterator iter = set.iterator();
        while(iter.hasNext()){
            Object Key = iter.next();
            Object Value = map.get(Key);
            System.out.println(Value+"\t"+Key);
        }

对于List集合来说,通过listIterator()方法可以获得 一个功能更为强大的列表迭代器ListIterator, ListIterator扩展了Iterator,它不仅能正向遍历,还 能反向遍历。

六、总结

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值