zlprime zlprime
  • 首页
  • 朝花夕拾
    • 摄影
    • 读书
    • 生活
    • 随笔
  • 技能分享
    • WordPress
  • 其它
    • 游记地图
    • 闲言碎语
    • 阅读书单
    • 友情链接
    • 留言板
  • Java
首页 › Java › 集合之ArrayList集合

集合之ArrayList集合

Stone
6月前Java
568 0 1

数组的缺点:数组定义完成并启动后,类型和长度是固定的。数组适合做数据个数和类型确定的场景,不适合做元素个数不确定的业务场景

集合的特点:集合的大小不固定,启动后可以动态变化大小,类型也可以不固定。适合元素个数不确定,需要进行增删改操作的业务场景。

ArrayList是集合中的一种,支持索引(即每个数据是有编号的)

ArrayList入门使用:

//1.调用无参构造器,创建ArrayList对象
ArrayList list = new ArrayList();

//2.向集合中添加数据
// public boolean add(E e)
list.add("zlprime");
list.add("java");
list.add(888);

//3.向指定索引位置插入数据,插入位置的数据会自动向后迁移 
// public void add(int index,E e)
list.add(1,".cn");
System.out.println(list);
//输出结果 [zlprime, .cn, java, 888]

使用泛型统一ArrayList操作的数据类型:

/*
ArrayList的泛型类: ArrayList<E>
<E> 表示在编译阶段约束集合对象只能操作 E 这种数据类型
ArrayList<String>: 表示此集合只能操作字符串类型的元素
ArrayList<Integer>: 表示此集合只能操作整数类型的元素
*/
ArrayList<String> str_lists = new ArrayList<>();
str_lists.add("zhang");
//str_lists.add(1); //由于通过泛型,指定了数据类型,所以再添加非String类型的数据就报错了

ArrayList的常用API:

ArrayList<String> lists = new ArrayList<>();
lists.add("Java");
lists.add("Python");
lists.add("HTML");
lists.add("VUE");
//1.public E get(int index) 获取某个索引位置处的元素值
String s = lists.get(0);  // 输出结果 Java

//2.public int size() 获取集合中的元素个数
System.out.println(lists.size()); // 输出结果 4

//3.集合的遍历
for (String list : lists) {
System.out.println(list);
}

//4.public E remove(int index) 删除索引位置的元素值,并返回该元素值
String remove = lists.remove(1);
System.out.println(remove);  // 输出结果 Python 。此时,字符Python已经从集合中删除嘞

//5.public boolean remove(Object o) 删除指定元素值,成功返回true,失败返回false
//如果集合中有重复的元素值,则只会删除第一次出现的
boolean result = lists.remove("HTML1"); //result的值是false,因为集合中并没有 HTML1 这个元素值

//6.public E set(int index,E e) 修改指定index位置的元素值,返回修改前的元素值
String css = lists.set(2, "CSS"); //将原有的VUE 修改成CSS,返回的值是VUE
System.out.println(css);

1.从集合中遍历元素,并删除符合条件的元素时,应该从集合后面往前进行遍历,可以避免漏掉元素

        //从集合中遍历元素,并删除符合条件的元素时,应该从集合后面往前进行遍历,可以避免漏掉元素
        //将整型集合[121,99,78,88]中小于100的元素进行删除
        ArrayList<Integer> lists = new ArrayList<>();
        lists.add(121);
        lists.add(99);
        lists.add(78);
        lists.add(88);
        for (int i = 0; i < lists.size(); i++) {
            if(lists.get(i)<100){
                lists.remove(i);
            }
        }
        System.out.println(lists); //输出结果 [121, 78]
/*
        我们可以发现,输出的结果中有元素不符合要求,但是同样没有被删除
        遍历集合的过程如下:
        i = 0  lists.size() = 4 ,lists.get(0)= 121>100 保留, i++  lists:[121,99,78,88]
        i = 1  lists.size() = 4 ,lists.get(1)=99 < 100 删除, i++  lists:[121,78,88]
        i = 2  lists.size() = 3 ,lists.get(2)=88 < 100 删除, i++  lists:[121,78]
        此时,i = 3 > lists.size(),则跳出了循环。
        但是78并没有被正确删除,这是由于在删除的过程中,集合的大小是动态变化的,索引值却在正常的递增。
        这就回导致一部分符合条件的元素,也无法被删除
        解决这个问题,可以通过从集合后面往前进行遍历
*/
        for (int i = lists.size()-1; i >=0;i--) {
            if(lists.get(i)<100){
                lists.remove(i);
            }
        }
        System.out.println(lists); //输出结果 [121]

2.集合中存储的元素并不是对象本身,而是对象的内存地址

java java基础
1
本文系作者 @Stone 原创发布在 zlprime。未经许可,禁止转载。
集合之Collection集合入门
上一篇
集合之List集合
下一篇
评论 (0)
再想想
聚合文章
JDBC的使用总结
5月前
Centos8中安装RabbitMQ
5月前
集合之Map集合
5月前
Collections集合工具类和可变参数
5月前
相关文章
JDBC的使用总结
Centos8中安装RabbitMQ
集合之Map集合
Collections集合工具类和可变参数
简介

海边微风起,等风也等你

留言板
留言板
小伙伴们
2Broear Libra の 向往 云帆沧海 若志随笔 豆豆 Chuanbo
Copyright © 2017-2023 zlprime. 皖ICP备17019582号
  • 首页
  • 朝花夕拾
    • 摄影
    • 读书
    • 生活
    • 随笔
  • 技能分享
    • WordPress
  • 其它
    • 游记地图
    • 闲言碎语
    • 阅读书单
    • 友情链接
    • 留言板
热门搜索
  • java
  • spring
Stone
67 文章
139 评论
83 喜欢
  • 1
  • 0
  • Top