前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java核心技术整理(六)---集合类

Java核心技术整理(六)---集合类

作者头像
葆宁
发布2022-01-13 14:00:51
2630
发布2022-01-13 14:00:51
举报
文章被收录于专栏:FREE SOLO

Collection是一个接口类,其继承了java迭代接口Iterable。

Collection接口有两个主要的子接口List和Set,注意Map不是Collection的子接口。

Collection中可以存储的元素间无序,可以重复组各 自独立的元素, 即其内的每个位置仅持有一个元素,同时允许有多个null元素对象。

Collection接口是List接口的父接口。

List接口中的元素的特点为:

List中存储的元素实现类排序,而且可以重复的存储相关元素。

  1. ArrayList: ArrayList数组线性表的特点为:类似数组的形式进行存储,因此它的随机访问速度极快。 ArrayList数组线性表的缺点为:不适合于在线性表中间需要频繁进行插入和删除操作。因为每次插入和删除都需要移动数组中的元素。 可以这样理解ArrayList就是基于数组的一个线性表,只不过数组的长度可以动态改变而已。 对于ArrayList的详细使用信息以及创建的过程可以查看jdk中ArrayList的源码,这里不做过多的讲解。 对于使用ArrayList的开发者而言,下面几点内容一定要注意啦,尤其找工作面试的时候经常会被问到。
在这里插入图片描述
在这里插入图片描述

a. 如果在初始化ArrayList的时候没有指定初始化长度的话,默认的长度为10。

在这里插入图片描述
在这里插入图片描述

b. ArrayList在增加新元素如果超过了原始的容量的话,ArrayList扩ensureCapacity的方案为“原始容量*3/2+1”。

在这里插入图片描述
在这里插入图片描述

c. ArrayList是线程不安全的,在多线程的情况下不要使用。

如果一定在多线程使用List的,您可以使用Vector,因为Vector和ArrayList基本一致,区别在于Vector中的绝大部分方法都使用了同步关键字修饰,这样在多线程的情况下不会出现并发错误,还有就是它们的扩容方案不同,ArrayList是通过原始容量*3/2+1,而Vector是允许设置默认的增长长度,Vector的默认扩容方式为原来的2倍。切记Vector是ArrayList的多线程的一个替代品。

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
  import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ArrayListTraversal {
    public void arrayListTraversal(List<Integer> lists){
        /* 第一种遍历方式 */
        System.out.print("for循环的遍历方式:");
        for (int i = 0; i < lists.size(); i++) {
            System.out.print(lists.get(i));
        }
        System.out.println();
        /* 第二种遍历方式 */
        System.out.print("foreach的遍历方式:");
        for (Integer list : lists) {
            System.out.print(list);
        }
        System.out.println();
        /* 第三种遍历方式 */
        System.out.print("Iterator的遍历方式:");
        for (Iterator<Integer> list = lists.iterator(); list.hasNext();) {
            System.out.print(list.next());
        }
    }
    public static void main(String[] args) {
        List<Integer> lists = new ArrayList<Integer>();
        /* 添加元素 */
        for (int i = 0; i < 10; i++) {
            lists.add(i);
        }
        new ArrayListTraversal().arrayListTraversal(lists);
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/12/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档