Java(九):Java集合

一、概述

  数组、集合都是对多个数据进行存储的,简称容器
【注】
  这里的存储指的是内存层面的存储(链式存储等),而不是持久化存储

1.1 数组

Java(五):Java(初级)数组

1.2集合

  由于数组的诸多缺点,Java中引入新的存储数据的结构:集合。而不同集合的底层数据结构不同,因此要学习很多不同的集合。分类如下:
在这里插入图片描述
  其中,Collection的存储方式为一个数据一个数据的存储,Map是一对儿一对儿的存储。Collection为接口,List和Set为子接口,最后通过ArrayList和LinkedList俩个实现类来实现。Map集合没有子接口,直接通过两个实现类来实现。
数组和集合的区别

  1. 数组长度固定,但集合长度可变
  2. 数组中存储的是同一类元素,可以存储基本数据类型值,集合存储的都是对象,而且对象类型可以不一致。

二、方法

1增
  1. add
  2. addAll
2删
  1. clear
      如果集合中有元素则删除返回true如果没有元素则删除失败返回false;返回值也可以是void,清空元素,集合还在
  2. remove
3查看
  1. iterator
      是Collection集合的通用获取方式,在取出之前先进行判断,直到取完为止。Iterator迭代器是一个接口,需要使用对应的实现类对象。通过调用Collection的iterator()方法返回实现类对象。

【常用方法】

  1. boolean hasNext():判断是否有下一个元素
  2. E next():返回迭代的下一个元素

【使用步骤】

  1. 获取实现类对象
  2. 判断是否有下一个元素
  3. 取出元素
    增强for循环:for each专门用来遍历数组和集合的
    格式:
    For(数组/集合的数据类型 变量名:集合/数组名){
    }
  4. size
4判断
  1. contains
  2. equals
  3. isEmpty

2.1 List接口(不唯一,有序)

2.1.1特点
  1. 有序集合,存储和取出的顺序是一致的
  2. 有索引,包含一些带索引的方法
  3. 允许存储重复的元素
2.1.2 带有索引的方法(防止索引异常)

Collection中的方法在List中同样可以使用

  1. Add
  2. Get:通过索引查看元素,在通过普通for循环的方式遍历List集合的时候用get()方法。
  3. Remove
  4. Set(替换指定索引的元素)
    【注】 在集合中存入的是Interger类型的数据的时候,调用remove方法删除的是某个index的数据
2.1.3 遍历方法

for,迭代器和增强for循环

2.1.4 List接口的实现类
  1. ArrayList
  2. LinkedList
    不同实现类的方法的使用围绕CRUD展开

2.2 Set接口(唯一,有序)

2.2.1遍历方式
  1. 迭代器
  2. 增强for循环

【注意事项】

  1. 如果泛型是自定义类型,一定要重写hashcode和equals方法
  2. 如果要使输出与输入顺序一样,要使用LinkHashSet
2.2.2 比较器

比如在String类中实现了Comparable接口,这个接口中有一个抽象方法CompareTo,String类中重写该方法即可。当比较自定义数据类型时,也需要让该类实现Comparable接口。然后在重写的comoaraTo方法中通过get方法或者其它方法来实现。类似这样比较的逻辑在自定义类中实现的叫做内部比较器。当写在自定义类的外部时,需要实现的接口变为Comparator,然后重写其中的compara方法即可。

2.3 Map接口

  1. 在创建Map集合时,可以指定泛型也可以不指定泛型。在向内部添加数据时使用put方法。
  2. 在对key和values进行集合遍历时,要分别使用keyset和values的方法来获取对应的集合对象,最后通过增强for循环的方式遍历。对于values也可以通过普通for循环加get得到对应的key来遍历。
  3. EntrySet方法得到的就是整个(key,values)

三、遍历方式

由于collection中无法得到对应索引,所以无法通过普通for循环来遍历

  1. forEach
  2. 通过集合对象调用iterator方法,输出前hasnext进行判断

未完待续

系列
Java(一):Java(初级)初识
Java(二):Java(初级)基础语法
Java(三):Java(初级)流程控制
Java(四):Java(初级)方法
Java(五):Java(初级)数组
Java(六):Java(初级)面向对象
Java(七):Java(中级)异常
Java(八):Java(中级)常用类
Java关键字

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值