Java集合概述

常用集合关系图

在这里插入图片描述

集合方法关系图

在这里插入图片描述

Collection

  • 定义
    • Collection是单列集合, 用于存储单个元素
  • 分类
    • List 集合中的元素是有序的,可以存放重复元素
    • Queue 队列, 除优先级外, 保持先进先出的原则(基本不用)
    • Set 集合中的元素是无序的, 不能存放重复的元素

List

  • 定义

    • List集合是有序的,可以储存重复的数据
    • List集合通过记录元素在集合中的位置来准确的查找元素
  • List集合体系

    • ArrayList 底层使用数组(线程不安全)
    • LinkedList 底层使用链表
    • Vector 底层使用数组(线程安全的,不推荐使用)

Set集合

  • 定义
    • Set集合存储的元素是无序的, 而且不允许储存重复的元素
    • 每当有新的元素存入的时候,Set集合会先去过滤, 如果发现和集合中现有元素出现重复, 就不在允许添加

Map集合

  • 定义

    • Map集合是一个双列集合,以键值对的形式存在
    • 将键和值捆绑到一起存放(Map.Entry)
    • 一个映射不能包含重复的键
    • 如果出现相同的键,会用新的值覆盖老的值
    • 每个键最多只能映射到一个值
  • Map接口和Collection接口的不同

    • Map是双列的,Collection是单列的
    • Map集合的数据结构针对键有效, 跟值无关, Collection 集合的数据结构是针对元素有效
  • 存储原理解析

    • 当我们将key和value存入Map集合的时候, map集合会创建一个Map.Entry对象包裹住键值对然后通过key计算出一个角标, 然后存入进入集合中

遍历方式

迭代器

  • 定义

  • 集合是用来存储元素,存储的元素需要查看,那么就需要迭代(遍历)

  • 迭代器的使用

    • Collection c = new ArrayList(); c.add()//ArrayList c = new ArrayList();
      //HashSet  s  = new HashSet();
      Iterator it = c.iterator();
      //Iterator it= 单列集合.iterator();
      while (it.hasNext()) {//判断是否有下一个元素,如果有则返回true,否则返回false
          // 如果有就取出这个元素
          Object object = (Object) it.next();//返回当前指针所在位置上的元素
          System.out.println(object);
      }
      
      

Foreach

  • foreachd 的使用格式

    /*	
    for(目标容器中的数据类型	临时变量名 	:	目标容器) {
    
    }
    */
    

遍历的过程中增删集合中的元素

  • 三种迭代方式的删除
    • 普通for循环,可以删除,但是需要索引(可以用但有逻辑问题)
    • 迭代器,可以删除,但是必须使用迭代器自身的remove方法,否则会出现并发修改异常
    • 增强for循环不能删除

泛型(了解)

  • 预编译我们的集合,规定了本集合中只能存放指定类型的数据
  • 保证数据的统一性、纯洁性
  • 例:ArrayList<>

ArrayList,HashSet,HashMap遍历

ArrayList a01 = new ArrayList();
HashSet   s01 = new HashSet();

//1、循环for-while
for(int i=0;<a01.size();i++)//或while
    Sysout.println(a01.get(i))
//2、迭代器
Iterator it =a01.iterator();
Iterator it =S01.iterator();//set 除了迭代器定义不同,其它相同
while(it.hasNext()){
    Object obj=(Object) it.next();
    Sysout->obj;
}

//3、for-each
//for(Object obj :s01)set这里改一下其它一致
for(Object obj: a01)
    Sysout->obj
//================================================    
//HashMap 的遍历比较特殊,不可直接遍历,需要转换一下
HashMap m=new HashMap();

//1>     K ==> V   先找到key值来找到v值
Set keys=m.keySet();

//2> entry(实例-[key-value键值对封装成set集合])
Set e=m.entrySet();
//Set<Map.Entry<E,E> > en=m.entrySet();3>泛型后,可分别输出

//遍历key--迭代器    或  foreach(不写)
Iterator it=keys.iterator();
while(it.hasNext()){
    Object obj=(Object ) it.next();
    sysout->  m.get(obj)       //V 值
        //K==>V
}

//Iterator<Entry<E,E>> it=en.iterator();
//while(it.hasNext()){
//    Map.Entry<E,E> e=it.next();
//	  sys->e.getKey();
//	  Sys->e.getValue();
//}
Iterator it= e.iterator();
while(it.hasNext()){
    sys->it.next()
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章