集合框架1(体系结构、collection接口、List接口)-第一阶段-第十二天

本文详细介绍了Java集合框架,包括集合的概念、单列集合与双列集合的区别,以及Collection接口和其子接口如List、Set的特性。重点讲解了List接口的使用,包括添加、获取、修改和删除元素的方法,以及排序操作。此外,还阐述了迭代器在遍历和删除元素中的关键作用。
摘要由CSDN通过智能技术生成

集合框架

一. 什么是集合?

集合是一个批量的数据储存的容器(内存),作用和数组非常类似
但是数组有着以下缺陷

  1. 数组的长度一旦确定就不可改变
  2. 数组对数据提供出的方法不够丰富(大多都继承的是Object的方法)

二. Java中的体系结构

  1. 集合分为两大类:单列集合和双列集合
    单列集合:该集合体系中的每个元素都是一个值
    双列集合:该集合体系中每个元素都有两个值组成分别是key键value值两者之间存在着映射关系
  2. 单列集合的顶级接口是Collection双列集合的顶级接口是Map
  3. Collection接口下又分为两个派系:List接口和Set接口
  4. List接口的特点是:有序有重复,Set接口的特点是:无序无重复
  5. List接口下有三个常用的实现类:ArrayList、Linked、Vector
  6. Set接口下有两个常用的实现类:HashSet、TreeSet,其中LinkedHashSet实现类继承于HashSet
  7. Map接口下分为两个派系TreeMap类和HashMap类,而其中LinkedHashMap实现类继承于HashMap

在这里插入图片描述

三. Collection接口的使用

所有的集合框架都是在java.util包中
在Collection接口中继承了Iterable(可被迭代的,能够通过循环的方式依次访问容器中的每个元素)
在Iterable接口中定义了一个抽象方法:Iterator iterator();要求返回一个迭代器对象(Iterable)

Collection接口中的常用方法

  1. add(E e) 向集合中添加一个新的元素,当没有具体的类型的时候默认为Object类型
    说明:任何集合中只能存储引用类型的数据
  2. size()返回集合中的元素个数;
		//接口多态
		Collection collection = new ArrayList();
		collection.add("zhangsan");
		collection.add(98.5);//自动封箱
		collection.add(true);
		collection.add(new String());
		System.out.println(collection.size());//4
  1. 迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”
    迭代操作:万能的迭代方式(使用迭代器)迭代器对象可以理解为一个指向整个容器的指针,初始状态它指向了第一个元素的前面
    获取迭代器对象
    调用迭代器对象的next()方法表示让迭代器往下移动一位并获取指向的元素的值返回
    循环的条件使用迭代器对象的hasNext()方法来控制,该方法可以用来判断是否存在下一个元素,如果存在就返回true否则返回false
		Collection collection = new ArrayList();
		Iterator iterator = collection.iterator();
		while(iterator.hasNext()) {
			Object value = iterator.next();
			System.out.println(value);
		}
  1. remove(Object o)从集合中删除指定元素,但是只能删除一个,要删除多个,就需要进行迭代(放在循环里删除),正确的调用方法
while(iterator.hasNext()) {
	Object value = iterator.next();
	//collection.remove("shangsan");
	//java.util.ConcurrentModificationException错误
	if (value.equals("zhangsan")) {
		iterator.remove();
		
	}
}
  1. 实现类(ArrayList)里面remove()方法原码
 public boolean remove(Object o) {
      if (o == null) {
          for (int index = 0; index < size; index++)
              if (elementData[index] == null) {
                  fastRemove(index);
                  return true;
              }
      } else {
          for (int index = 0; index < size; index++)
              if (o.equals(elementData[index])) {
                  fastRemove(index);
                  return true;
              }
      }
      return false;
  }
  1. addAll(Collection collection);将一个集合中的所有元素添加到另一个集合中(批量的添加)
  2. clear();清空集合中所有的元素
  3. contains(Object o);查询集合中是否有o这个对象,在原码中是用equals方法进行判断
  4. isEmpty();判断当前集合是否为空
  5. toArray();将当前集合转换为数组

四. List接口的使用

首先List接口是从Collection接口那里继承而来,特点是有序有重复
有序:每个元素都有一个固定的下标,和数组类似
有重复:可以有多个重复的元素

List接口中与下标相关的对应方法

  1. add(int index, Object object),添加元素到指定序列
  2. get(int index)根据下标直接获取某个位置的元素值并返回
  3. set(int index,Object e)修改指定下标位置的元素值
  4. remove(int index) 根据下标删除指定位置的元素

注意:如果按照一个int类型的数据内容进行删除,需要手动进行包装,否则将参数理解为下标

  • sort(Comparator c )
 List list=new ArrayList();
 		
 list.add(111);
 list.add(222);
 list.add(444);
 list.add(777);	
 list.add(666);
 
 //System.out.println(list.get(3));
 
 list.sort(new Comparator() {
     @Override
     public int compare(Object o1, Object o2) {
         // TODO Auto-generated method stub
         return (Integer)o1-(Integer)o2;
     };
 });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值