2020/11/18·Java·ArrayList

ArrayList概念

ArrayList就是传说中的动态数组 什么时候相加进就加进,什么时候想删除就删除。属于有序列表,元素可重复,不同步。由于arraylist不是同步的,所以,想要线程安全的时候,需要直接在初始化时用 Collections.synchronizedList 方法进行包装。


ArrayList常用方法

//List<String> list = new ArrayList<>();
ArrayList<String> list = new ArrayList<>();//声明
list.add("abc");//在尾部添加元素
list.add("bcd");//在尾部添加元素
list.add("fgh");//在尾部添加元素
list.add(2,"zky");//在某个位置插入元素

ArrayList<String> list2 = new ArrayList<>();//声明
list2.add("123");//在尾部添加元素
list2.add("456");//在尾部添加元素
list2.add("980");//在尾部添加元素
list2.add("980");//在尾部添加元素
list2.add("123");//在尾部添加元素
list2.add("456");//在尾部添加元素

ArrayList<String> list3 = new ArrayList<>();//声明
list3.add(",,,");//在尾部添加元素
list3.add("。。。");//在尾部添加元素
list3.add("!!!");//在尾部添加元素

list.addAll(4,list3);//在某个位置插入整个集合

list.clear();//清除该列表中的所有元素

list.addAll(list2);//在末尾添加整个集合

list2 = (ArrayList<String>) list.clone();//浅拷贝
list2.set(2,",,,");//修改 list2 某个位置的元素, 并不会修改 list
System.out.println("clone:"+list2);//clone:[123, 456, ,,,, 980, 123, 456]

//是否包含某个元素,boolean
System.out.println(list.contains("45"));//false
System.out.println(list.contains("456"));//true

System.out.println(list.indexOf("123"));//从头部开始查找,返回该元素的下标,0
System.out.println(list.lastIndexOf("123"));//从尾部开始查找,返回该元素的下标,4
System.out.println(list.indexOf("133"));//从尾部开始查找,返回该元素的下标,找不到则返回 -1

System.out.println(list.isEmpty());//判断列表是否为空,false
System.out.println(list.remove("123"));//从头部开始,移除第一个符合的元素,移除成功则返回true
System.out.println(list.remove(2));//移除并返回某个位置对应的元素


//for循环 456980123456
for (int i = 0;i<list.size();i++){//size 返回列表中的元素个数
  System.out.print(list.get(i));//获取某个位置的元素
}
System.out.println();//换行

//foreach 循环 456980123456
for (String str : list){
  System.out.print(str);
}
System.out.println();//换行

//迭代器 456980123456
Iterator iterator = list.iterator();
while (iterator.hasNext()){
  System.out.print(iterator.next());
}
System.out.println();//换行

System.out.println(list);//输出列表 [456, 980, 123, 456]
System.out.println(list.toString());//转换为字符串 [456, 980, 123, 456]
System.out.println(list.toArray());//转换为数组 [Ljava.lang.Object;@1540e19d

//如有必要,增加此 ArrayList 实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数
list.ensureCapacity(10);
//将此 ArrayList 实例的容量调整为列表的当前大小
list.trimToSize();

//按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组
System.out.println("===================");
String[] strArr = new String[list.size()];
String[] toArray = list.toArray(strArr);
System.out.println(Arrays.asList(toArray));//[456, 980, 123, 456]

ArrayList优缺点

因为ArrayList底层使用数组实现,所以优缺点与数组类似。

优点: 根据下标随机访问、遍历元素效率较 LinkedList 高;在数组的基础上封装了对元素操作的方法,较 Array 方便;可以自动扩容,每次扩容现有容量的50%,较 Array 好;占用内存较LinedList小。

缺点: 插入和删除的效率比较低,需要移动元素;根据内容查找元素的效率较低;存储地址必须连续,内存利用率较 LinkedList 低。


一文一哲理

成熟不是年龄,而是一种境界

最后麻烦朋友们的小手手点点赞,你们的点赞是我创作最大的动力!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值