Collection集合和数组补充

数组

数组和集合都是容器

数组定义完成并启动后,类型确定长度固定,在进行增删数据操作的时候,数组是不太合适的,增删数据都需要放弃原有数组或位移

数组适合的场景

当业务数据的个数是固定的,且都是同一批数据类型的时候,可以采用定义数组存储

集合

集合是java中存储对象数据的一种容器

特点

  • 集合的大小不固定,启动后可以动态变化,类型也可以选择不固定,集合更像气球
  • 集合非常适合做元素的增删操作

注意: 集合中只能存储引用类型数据,如果要存储基本类型数据可以选用包装类

集合类体系结构

在这里插入图片描述

  • Collection单列集合,每个元素(数据)只包含一个值
  • Map双列集合,每个元素包含两个值(键值对)

在这里插入图片描述

Collection集合的特点

List系列集合:添加的元素是有序,可重复,有索引

  • ArrayList,LinkedList:有序,可重复,有索引
    Set系列集合:添加的元素是无序,不重复,无索引
  • HashSet:无序,不重复,无索引;LinkedHashSet:有序,不重复,无索引
  • TreeSet:按照大小默认升序排序,不重复,无索引

Collection API

Collection它的功能全部单例集合都能继承使用

  • add(E e) 把给定的对象添加到当前集合中
  • clear() 清空集合中所有的元素
  • remove(E e) 把给定的对象在当前集合中删除,只能删除第一个
  • contains(Object obj)判断当前集合中是否包含给定的对象
  • isEmpty()判断当前集合是否为空
  • size() 返回集合中元素的个数
  • toArray() 把集合的元素,存储到数组中
  • addAll() 把一个集合内容拷贝到另一个集合中
 public static void main(String[] args) {
        Collection<String> list1 = new ArrayList<>();
        Collection<String> list2 = new ArrayList<>();
        //添加
        list1.add("西瓜");
        list1.add("南瓜");
        System.out.println(list1);//[西瓜,南瓜]
        //清空
        //list1.clear();
        System.out.println(list1);//[]
        //删除指定
        //list1.remove("西瓜");//[南瓜]
        //断当前集合中是否包含给定的对象
        list1.contains("西瓜");//true
        //判断集合是否为空
        list1.isEmpty();//flase
        //集合长度
        list1.size();//2
        //集合存储到数组
        list1.toArray();
        //拷贝
        list2.add("白瓜");
        list1.addAll(list2);
        System.out.println(list1);//[南瓜,白瓜,西瓜]
    }

集合遍历

迭代器

iterator 迭代器得到的对象,默认指向当前集合的索引0
hasnext
next
建议用断点走一走
取元素越界会出现NoSuchElementException

 public static void main(String[] args) {
        Collection<String> list1 = new ArrayList<>();
        list1.add("西瓜");
        list1.add("西瓜");
        list1.add("西瓜");
        list1.add("西瓜");
        Iterator<String> iterator = list1.iterator();
        while (iterator.hasNext()){
            String it = iterator.next();
            System.out.println(it);
        }

    }

foreach遍历/增强for循环

  • 即可以遍历集合也可以遍历数组
  • 内部原理是一个Iterator迭代器,遍历集合相当于是迭代器的简化写法
  • 实现Iterable接口的类才可以使用迭代器和增强for,Collection接口已经实现了Iterable接口
    格式
for(元素数据类型 变量名 : 数组或者Collection集合){
	使用变量即可
}

Collection<String> list = new ArrayList<>();
for(String it : list){
	System.out.println(it);
}

Lambda表达式遍历集合

forEach

  public static void main(String[] args) {
        Collection<String> list1 = new ArrayList<>();
        list1.add("西瓜");
        list1.add("西瓜");
        list1.add("西瓜");
        list1.add("西瓜");
       list1.forEach(new Consumer<String>() {
           @Override
           public void accept(String s) {
               System.out.println(s);
           }
       });
       list1.forEach(s -> System.out.println(s));

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值