java集合

集合

  • 可以动态保存多个对象,使用比较方便
  • 提供了一系列方便的操作对象的方法:add,set,get,remove
  • 使用集合添加删除元素的代码更加简洁

java集合_第1张图片

java集合_第2张图片

集合主要是两组(单列集合,双列集合)

Collection接口有两个重要的子接口List,Set,他们的实现子类都是单列集合

Map实现的子类是双列集合,存放的是Key-Value

Collection接口和常用方法

  • collection实现子类可以存放多个元素,每个元素都是Object
  • 有些collection实现的子类可以存放重复的元素,有些不可以
  • 有些collection实现的子类中的元素是有序的(List),有些是无序的(Set)
List list = new ArrayList();
list.add("jack");//添加元素
list.remove(0);//删除第一个元素
list.contains("jack")//查找元素是否存在返回True 或者 False
list.size()//获取元素个数
list.isEmpty()//判断是否为空
list.clear();//清空元素
  • collection接口遍历元素的方式-01-使用Iterator(迭代器)

    • Iterator对象称为迭代器,主要用来遍历Collection集合中的元素
    • 所有实现了collection集合类都有一个iterator()方法,用于返回一个实现了Iterator接口的对象
    • Iterator仅用于遍历集合
    Iterator iterator = col.iterator();
    while (iterator.hasNext()) {//判断是否还有数据
     //返回下一个元素,类型是 Object
     Object obj = iterator.next();
     System.out.println("obj=" + obj);
    }
    

List接口

List集合类中的元素是有序的,(添加元素的顺序和取出元素的顺序是一样的),且可以重复

List集合类中的每个元素都都有对应的顺序索引,

List集合类中的每个元素都对应一个整数型序号记载其在其中的位置,可以根据序号取出元素

List接口的实现类:ArrayList,LinkedList,Vector

  • 常用方法

    List list = new ArrayList();
    list.add("张三丰");
    list.add(1, "寻");//在 index = 1 的位置插入一个对象
    list.get(int index)//获取指定 index 位置的元素
    list.indexOf("tom")//返回 tom 在集合中首次出现的位置
    list.lastIndexOf(Object obj)//返回 obj 在当前集合中末次出现的位置
    list.remove(int index)//移除指定 index 位置的元素,并返回此元素    
    list.set(int index, Object ele)//设置指定 index 位置的元素为 ele , 相当于是替换.  
    list.subList(int fromIndex, int toIndex)//返回从 fromIndex 到 toIndex 位置的子集合
    
  • 遍历方式

    Iterator ite = col.iterator();
    while(ite.hasNest()){
    	object obj = ite.next();
    }
    ---
    for(Object o : col){
    
    }
    ---
    for(int i = 0;i<list.size();i++){
    
    }
    

Vector

Vector底层是一个对象数组

Vector是线程同步的,即线程安全

java集合_第3张图片

LinkedList

LinkedList底层实现了双向链表和双端队列

可以添加任意元素(元素可以重复),包括null

线程不安全,没有实现同步

LinkedList中维护了两个属性,first和last分别指向首节点和尾节点

java集合_第4张图片

set接口

  1. 无序(添加和取出元素的顺序不一样),没有索引
  2. 不允许包含重复元素,最多包含一个null

set接口的遍历可以使用迭代器和增强for循环,不可以使用索引

HashSet

HashSet实现了set接口

HashSet实际上是HashMap

可以存放null,但是只可以存放一个

java集合_第5张图片

map

//1. Map 与 Collection 并列存在。用于保存具有映射关系的数据:Key-Value(双列元素)
//2. Map 中的 key 和 value 可以是任何引用类型的数据,会封装到 HashMap$Node 对象中
//3. Map 中的 key 不允许重复,原因和 HashSet 一样,前面分析过源码. //4. Map 中的 value 可以重复
//5. Map 的 key 可以为 null, value 也可以为 null ,注意 key 为 null,只能有一个,value 为 null ,可以多个
//6. 常用 String 类作为 Map 的 key
//7. key 和 value 之间存在单向一对一关系,即通过指定的 key 总能找到对应的 value
  • 遍历方式

    //(1) 增强 for
    System.out.println("-----第一种方式-------");
    for (Object key : keyset) {
    	System.out.println(key + "-" + map.get(key));
    }
    //(2) 迭代器
    System.out.println("----第二种方式--------");
    Iterator iterator = keyset.iterator();
    while (iterator.hasNext()) {
    	Object key = iterator.next();
    	System.out.println(key + "-" + map.get(key));
    }
    

    java集合_第6张图片

你可能感兴趣的:(java,java)