java集合

java集合的概念

是一种容器,用来储存对象(存储N个)
集合和数组也是比较类似的都是用来存储数据
在java中集合可分为两种体系CollectionsMap

- 与数组的区别

  1. 存储数据的长度
    • 数组长度一旦确定不能改变
    • 集合可以改变长度
  2. 数据类型的区别
    • 数组中不能存储与指定类型不同的其它数据类型的对象
    • 集合中可以存储任意的类型(Object)

Collection

Collection是所有集合的顶层接口

  • List : 有序、可重复

    • ArrayList
      1. 使用一个可变长度的数组实现, 非线程安全
        – 第一次调用add方法数组长度为10
        – 每次扩容都是之前容量的1.5倍, 且在添加数组的最后一个元素时会进行扩容操作
      2. 在内存中是连续的一块空间保存数据, 不适合存储大量的元素
      3. 索引速度快(有下标, 所以查找元素的效率高)
      4. 插入和删除元素的效率低(涉及大量的数据移动)
    • LinkedList
      1. 使用双向链表的方式(结构实现), 非线程安全
      2. 在内存中以分散的形式存储数据
      3. 查找元素效率低
      4. 插入与删除元素的效率高
    • Vector
      1. 与ArrayList相同(使用可变长度的数组实现), 线程安全
      2. 查询, 插入, 删除效率低
  • Set:无序,可重复

    • HashSet
      • 常用API方法与List差不多
      • 基于HashMap实现(基于hashCodeequals方法实现对数据对象的不可重复)
      1. hashCode: 比较两个对象的哈希码值, 如果不相等, 则直接将对象添加至集合中, 如果hash码相等, 则调用equals方法进行比较
      2. equals: 判断两个对象中的指定/所有成员属性值是否相等, 如果相等,则不添加,如果不相等,则添加到集合中
      • 注意⚠️:如果对象重复, 则新添加的元素被直接丢弃
      • HashSet去重原理:
        1比较两个对象的哈希码值, 如果不相等, 则直接将对象添加至集合中, 如果hash码相等, 则调用equals方法进行比较
        判断两个对象中的指定/所有成员属性值是否相等, 如果相等,则不添加,如果不相等,则添加到集合中
    • LinkedHashSet
      • 有序: 使用链表维护该集合的顺序
        不可重复: 实现原理与HashSet一致
    • SortedSet:子接口
      • TreeSet
        1. 无序
        2. 不可重复
        3. 常用API方法与HashSet一致
        4. 默认对存储的数据/元素实现排序
          • 实现方式: 使用comparTo方法
            注意: 集合指定的泛型类型必须实现 Comparable 接口, 重写 compareTo 方法
foreach循环 / 增强型 for 循环
  • 语法:
for(数据类型 变量名称 : 集合/数组变量名称){

}
// 以数组为示例:
int[] nums = {1, 2, 3};
for(int num : nums){
    System.out.println(num);
}
        

iterator()

  • 迭代器: Iterator: 是重复反馈过程的活动
    长对过程的重复行为称之为迭代
  • 迭代器使用中注意:
    1. 在迭代器完成之后, 位置在元素的最后一个索引, 所以不能再重新进行迭代
    2. 在迭代过程中,不能多次调用next方法
    3. 在迭代过程中, 不能向集合中添加或删除元素

泛型

  • 指定集合中元素的数据类型(集合中可以存储的元素的数据类型)

  • 语法:< ElementType >

    ArrayList< Integer > list = new ArrayList< Integer >();

    一旦集合指定了泛型类型之后, 那么该集合中只能存储与指定类型一致的元素

  • 泛型的数据类型使用

    1. List<?>: ? 可以是任意的类型
    2. List<? extends E>: ? 可以是本类类型或其子类类型
    3. List<? super E>: ? 可以是本类类型或指定类型的父类类型

List: sort(): 用来对集合中的元素进行排序

  • Collections.sort(list);

    • list泛型类型必须实现 Comparable , 重写 compareTo 方法
  • Collection:是一个集合的顶层父接口

  • Collections: 是一个工具类

  • 排序操作:

    • sort(List): 对指定的集合中的元素进行排序
    • reverse(List): 将指定集合中的元素进行反转
    • shuffle(List): 将指定集合中的元素顺序随机打乱
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值