java集合框架(一):集合框架介绍

集合是java中用于存储多个数据的一种容器,它与数组的区别是:
数组的长度是固定的,可以存储基本数据类型和引用数据类型,且存储的是同一类型的数据;
集合的长度是可变的,只能存储引用数据类型,且存储的数据类型可以不一样。
根据存储结构,java集合分为两类:单列集合(Collection)和双列集合(Map)Map。

一、Collection接口

Collection是单列集合的根接口,主要用于存储一系列符合规则的元素,Collection有两个常用的子接口List、Set和Queue;
在这里插入图片描述
Collection是接口,不能实例化,所以其实现主要有子接口(Set和List)完成。
常用方法:

//添加元素
boolean add(E e);
//将指定集合中所有元素添加到此集合中
boolean addAll(Collection<? extends E> c);
//从集合中移除指定元素的单个实例
boolean remove(Object o);
//删除此集合的所有元素,这些元素包括在指定集合中
boolean removeAll(Collection<?> c);
//从此集合中删除所有元素
void clear();
//判断此集合是否包含有元素, 如果没有则返回true
boolean isEmpty();

Collection接口的遍历方式有两种:使用迭代器(Iterator)和foreach。foreach底层仍是迭代器,可以理解成简化版本的迭代器遍历。

Collection coll = new ArrayList();
//使用迭代器Iterator遍历
Iterator it = coll.iterator();
while(it.hasNext) {
	Systerm.out.println(it.next);
}
//使用foreach遍历
for(Object o:coll){
	Systerm.out.println(o);
}
//使用for循环
for(int i=0;i<coll.size();i++) {
	Systerm.out.println(coll.get(i));
}
1、List接口

List接口是Collection接口的子接口,主要实现类有ArrayList、LinkedList和Vector。
特点:
1、它是一个存取元素有序的集合。
2、它是一个带索引的集合,可以通过索引精确操作集合中的元素。
3、List集合中可以有重复元素,通过元素的equals()方法来比较是否是重复元素。
常用方法:

//将指定的元素,添加到该集合指定的位置上
void add(int index,E element);
//将指定元素添加到此集合的末尾
boolean add(E e);
//将指定集合中的所有元素添加到此集合指定的位置
boolean addAll(int index,Collection<? extends E> c);
//返回集合中指定的元素
E get(int index);
//移除集合中指定位置的元素
E remove(int index);
//用指定的元素替换集合中指定的元素,返回更新前的元素
E set(int index,E element);

遍历方式

		List list = new ArrayList();
        list.add("a");
        list.add("b");
        list.add("c");

        //使用Iterator迭代器
        Iterator it = list.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }

        //使用for循环
        for (int i=0;i<list.size();i++) {
            System.out.println(list.get(i));
        }
        //使用foreach
        for (Object a:list
             ) {
            System.out.println(a);
        }
2、Set接口

Set接口也是Collection的子接口,主要实现类有TreeSet、HashSet、LinkedHashSet。
特点:
1、元素是无序的,添加的顺序和取出的顺序可能不一样
2、没有索引(跟List不一样),不允许有重复元素,最多包含一个null值。
常用方法:

//如果指定的元素不存在,则将其添加到集合中
boolean add(E e);
//如果指定集合中所有元素都不存在,则将其添加到集合中
boolean addAll(Collection<? extends E> c);
//删除集合中所有的元素
void clear();
//判断集合是否有元素,如果没有则返回true
boolean isEmpty();

遍历方式:

		Set set = new HashSet();

        set.add("a");
        set.add("b");
        set.add("c");

        //通过Iterator迭代器
        Iterator it = set.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
        //通过foreach遍历
        for (Object o:set
             ) {
            System.out.println(o);
        }

因为set集合是无序的,因此不能通过索引值来获取集合中的元素,因此不能使用for循环来遍历集合。

二、Map接口

Map是双列集合的根接口,集合中的数据以Key-Value的形式存储,key和value可以是任意的引用类型数据,key不能重复,value可以重复。Map常见的实现类有HashMap、LinkedHashMap、TreeMap、HashTable、ConcurrentHashMap。
在这里插入图片描述

特点:
1、Map和Conllection并列存在,用于保存具有映射关系的数据:key-value。
2、Map中的key和value可以是任意的引用数据类型,会封装到HashMap$Node对象中(Node是hashMap的内部类,实现了Map.Entry()接口)。
3、常用String类作为Map的key,key和value之间存在一一对应的关系,可以通过key找到value。
4、Map中的key不允许重复,可以为null,且只能有一个null;value可以重复,可以为null,可以有多个null。
常用方法:

//添加元素
V put(K key, V value);
//根据键删除映射关系
V remove(Object key);
//根据键获取value
V get(Object key);
//获取键-值映射的个数
int size();
//判断map中是否包含映射
boolean isEmpty();
//判断map是否包含有指定key的value
boolean containsKey(Object key);

遍历方式:

		Map map = new HashMap();
        map.put("西游记", "吴承恩");
        map.put("红楼梦","曹雪芹");
        map.put("三国演义","罗贯中");
        map.put("水浒传","施耐庵");

        //1、使用map的keySet()获取key,通过key遍历得到value
        Set set = map.keySet();
        //通过foreach遍历
        for (Object key: set
             ) {
            System.out.println(key+"-"+map.get(key));
        }
        //使用迭代器Iterator遍历
        Iterator it = set.iterator();
        while (it.hasNext()) {
            Object key = it.next();
            System.out.println(key+"-"+map.get(key));
        }
        //2、通过获取所有map的values方法获取所有value
        Collection values = map.values();
        //使用foreach遍历
        for (Object value:values
             ) {
            System.out.println(value);
        }
        //通过Iterator迭代器遍历
        Iterator iterator = values.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        //3、通过Map的entrySet方法获取key-value
        Set entrySet = map.entrySet();
        //使用foreach遍历
        for (Object entry: entrySet
             ) {
            Map.Entry m = (Map.Entry) entry;//将entry转成Map.Entry
            System.out.println(m.getKey()+"-"+m.getValue());
        }
        //通过Iterator迭代器遍历
        Iterator iterator1 = entrySet.iterator();
        while (iterator1.hasNext()) {
            Object entry = iterator1.next();
            Map.Entry  m = (Map.Entry) entry;
            System.out.println(m.getKey()+"-"+m.getValue());
        }

后续继续具体的实现类
List集合:ArrayList、Vector、LinkedList;
Set集合:HashSet、TreeSet、LinkedHashSet;
Map集合:HashMap、LinkedHashMap、TreeMap、HashTable、ConcurrentHashMap。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值