第15天java基础 集合

今天主要是概述java集合的知识点

一、集合的论述

1、集合的定义

集合也是一个容器,用于存数据

2、 数组与集合

相同点

  1. 都用来存数据, 都可以通过索引来获取数据
  2. 都采用数组的方法来进行存的

不同点

  1. 数组可以存基本数据类型,也可以存引用数据类型
    集合只能够存引用数据类型
  2. 数组的长度是固定的,集合的长度是可变的

二、Collection

1、Collection定义

Collection 层次结构 中的根接口 索引也是从0开始

2、 Collection常用的方法

1、常规的一些方法:

boolean add(E e) 添加,返回值是bealoon 添加成功返回true

boolean contains(Object o) 判断是否有此元素 如果存在返回true, 否则false。 *System.out.println(col.contains("苍老师"))*

boolean isEmpty() 判断集合里是否有元素
boolean remove(Object o) 根据集合里的元素进行删除((ArrayList) col).remove(1)
int size() 获取到集合的长度
Object[] toArray() 把集合转换成数组
void clear() 清空数组里的所有的元素
iterator() 把集合转换成迭代器的方法

2、所有带All 的方法:

  1. addAll(Collection<? extends E> c) 把小集合添加到大集合里, 例如: co.addAll©; 把集合 c的所有数据添加到co
  2. boolean containsAll(Collection<?> c) 如果此 collection 包含指定 collection 中的所有元素,则返回 true。
  3. removeAll(Collection<?> c) 返回值:如果存在交集返回 是true , 返回的是没有较交集的数据,co.remove© co里删掉c的全部元素
  4. retainAll(Collection<?> c) 返回值 判断是否发生该变,如果发生该变返回true,不发生该变返回false 取出来的是交集的结果。

3、如何对集合来进行遍历:

1、 for循环

 Collection  col = new ArrayList();     //这是一个集合
         col.add(3);
    col.add(student1);
    col.add(student2);
    col.add(student3);
    col.add(student4);              //往里面添加数据            
for (int  i=0;i<col.size();i++){
                 col.get(i);
         }                                //for循环往里面取数据

2、增强for 循环

 for(Object  obj:col){
                                       //把obj对象转换成Student对象
           Student  s = (Student)obj;  //向上转型,去取得da类里面的Name,age值,也就是成员变量的值
            System.out.println(s.getName()+"\t"+s.getAge());
        }

3、 使用迭代器来进行遍历

增强for 循环的底层也是使用迭代器来实现,也是通过指针.
Iterator : 是一个接口,不能够被实例化
常规的方法: hasNext() 判断是否有下一个元素, 如果有返回true

    // 如果需要第一个对象
  
     //取数据

Object  obj =  ite.next();
      Student s  =(Student) obj;
      
        Iterator ite = col.iterator()  ;//把集合转换成迭代器,col是一个集合,iterator() 迭代器的方法,用迭代器必须要有这个
while (ite.hasNext())
  {
      System.out.println(((Student)ite.next()).getName()+"\t"+((Student)ite.next()).getAge());
       // 上面一行也就是下面的一行
         Student s =(Student) ite.next();
        System.out.println(s.getName()+"\t"+s.getAge());
     }   

迭代器的内存图:

在这里插入图片描述
List: 导包 java.util 是一个接口

3、List

导包 java.util 是一个接口,是Collection的一个子接口
List list=new ArrayList();
特点:1. 有顺序 2. 有索引 3.可以重复

List集合常规独有的一些方法:
public void add(int index, E element) 根据索引的位置来进行添加
E get(int index) 根据索引来获取其值
E remove(int index) 根据索引来进行删除
E set(int index, E element) 也是替换 (前提这个已经存在)
总结: 这个方法都是根据索引来进行操作的
迭代器遍历报错: java.util.ConcurrentModificationException 对象的并发修改
对策:
ListIterator iter=list.listIterator(); 也就是把list集合转换成迭代器 否则无法遍历
ListIterator 这个迭代器是针对 list 集合而存在, 它的父类也是Iterator

List list=new ArrayList();  //就是把list集合转换成迭代器  否则无法遍历
ListIterator iter=list.listIterator();
while(iter.hasNext()){
   String str= (String)iter.next();
   if (Str.equals("ta")){
       list.add("san);          //还是要在集合里面添加
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值