集合的使用

本文详细介绍了Java中的容器数据结构,如集合、数组、ArrayList、Vector、LinkedList以及泛型的概念和使用。重点讲解了它们的特点、操作方法和在不同场景的应用,同时讨论了泛型带来的优点和如何在List类型中使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 容器

  • 容器|集合 :
    存储多个数据。

    集合的特点:
       1.存储任意引用类型数据。
       2.集合的长度可变,可以根据需求动态的增删数据,长度随之改变。
    
  • 数组 :
    存储多个数据,一段连续的内存空间。

    数组的特点:
       1.引用数据类型。
       2.定长,长度一旦确定不可改变。
       3.存储数据的类型相同。
       4.有序,有索引。
    
  • 简单封装容器类型(ArrayList):

     MyContainer 只能存储字符串数据  String[] elementData;
    
  • 容器中的接口层次结构:

     Collection : 单个值的集合
         Set 无序不可重复
         List 有序可重复,有索引
     Map : 键值对的集合(KEY-VALUE)
    Collection 集合层次结构中的根接口。 集合表示一组对象,称为其元素 。
       常用方法
         遍历方式
            foreach
            iterator迭代器
    
  • 常用方法:

     boolean add(E e)                       确保此集合包含指定的元素(可选操作)。
     boolean addAll(Collection<? extends E> c)
                                            将指定集合中的所有元素添加到此集合中(可选操作)。
     void clear()                           从此集合中删除所有元素(可选操作)。
     boolean isEmpty()                      如果此集合不包含任何元素,则返回 true 。
     boolean contains(Object o)             如果此collection包含指定的元素,则返回 true 。
     boolean containsAll(Collection<?> c)   如果此集合包含指定集合中的所有元素,则返回 true 。
     boolean remove(Object o)               从此集合中移除指定元素的单个实例(如果存在)(可选操作)。
     boolean removeAll(Collection<?> c)     删除此集合的所有元素,这些元素也包含在指定的集合中(可选操作)。
     boolean retainAll(Collection<?> c)     仅保留此集合中包含在指定集合中的元素(可选操作)。
     int size()                             返回此集合中的元素数。
     Object[] toArray()                     返回包含此集合中所有元素的数组。
     Iterator<E> iterator()                 返回此集合中元素的迭代器。
    

2. 泛型
jdk1.5

    参数化类型 : 数据类型作为参数传递
                只能配置引用数据类型
    <>定义泛型
    泛型的行为发生在编译期间,运行期间发型配置的所有内容无效,泛型擦除。
    要求先定义泛型,才能使用泛型。
    泛型类 : 类型的后面定义泛型,在使用类型的时候可以通过泛型传递具体的类型,类中可以进行使用
    泛型方法。
  • 泛型的优点:

         1.代码简单简洁。
         2.增强程序健壮性,避免类型转换异常的出现。
         3.增强稳定性与可读性。
    

3. List

List : 有序,可重复
Set : 无序,不可重复|唯一的
List : 有序集合(也称为序列 )。 该接口的用户可以精确控制列表中每个元素的插入位置。
新增: 一些列根据索引操作的方法
遍历方式 :
    for普通for循环
    foreach 增强for循环
    iterator迭代器

4. ArrayList
有序,可重复的

ArrayList : 实现所有可选列表操作,并允许所有元素,包括null 。
    底层结构: 数组  Object[] elementData;
    特点: 根据索引查询遍历效率较高,增删效率低.
    应用场景: 适合应用在大量做查询,少量做增删的位置.
  • 扩容问题:

         初始容量 : 默认初始容量为10 ,在第一次添加add的时候进行构建  private static final int DEFAULT_CAPACITY = 10;
         扩容机制 : 每次扩容原容量的1.5倍 int newCapacity = oldCapacity + (oldCapacity >> 1);
    
  • 新增功能:
    void forEach(Consumer<? super E> action)

  • 遍历 :

         普通for
         增强for
         iterator迭代器
         listIterator迭代器
    
  • Vector :

     底层结构 : 数组.
     特点 : 与ArrayList相同.
    
  • ArrayList和Vector的区别:

     1)  Vector是同步的|线程安全.
         ArrayList不同步|线程不安全,相对效率较高.
     2) Vector每次扩容原容量的2倍.
        ArrayList每次扩容原容量的1.5倍,相对ArrayList更有利于节省内存.
    总结 :  
       1.如果不需要线程安全实现,建议使用ArrayList代替Ve.1。
       2.定义一个ArrayList存储javabean类型的数据,测试使用。
       3.如果存储javabean类型的数据,在调用一些方法时候(indexOf..),默认调用equals方法进行判断,要求对javabean类型重写equals方法。
    
  • LinkedList:
    实现所有可选列表操作,并允许所有元素(包括null )。

     底层结构: 双向链表。
     特点: 查询效率低,增删效率高。
     应用场景:单个数据值的集合中,允许数据有序,且可重复,在大量做增删,销量做查询的时候时候适合使用链表。
     新增功能: 新增了一些与链表头尾相关的方法。
     注意: 请注意,此实现不同步。
     总结:
        1.定义链表结构,存储javabean类型的数据,测试使用,遍历使用。
        2.存储javabean类型数据时候,要求javabean类型重写equals方法,否则使用一些判断比较的方法时候回默认调用equals方法。
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值