首页 > 编程语言 >Java集合操作

Java集合操作

时间:2022-10-11 17:08:23浏览次数:75  
标签:Java List System println add 集合 操作 strList out


1、集合转数组

集合转数组建议采用以下写法:

//接口方法
<T> T[] toArray(T[] a);

List<String> strList = new ArrayList<>();
strList.add("str1");
strList.add("str2");
strList.add("str3");
String[] strArray = strList.toArray(new String[strList.size()]);

而不要采用:

//接口方法
Object[] toArray();

String[] strArray = (String[]) strList.toArray();

这样不仅需要强转,而且会抛出以下异常:

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

2、删除集合中的元素一定要从角标大的往角标小的删

正确的删除顺序,大角标到小角标:

List<String> strList = new ArrayList<>();
strList.add("str1");
strList.add("str2");
strList.add("str3");

System.out.println(strList.remove(2));
System.out.println(strList.remove(1));
System.out.println(strList.remove(0));

从小角标往大角标删除,可能会导致删除的不是预期元素:

List<String> strList = new ArrayList<>();
strList.add("str1");
strList.add("str2");
strList.add("str3");

System.out.println(strList.remove(0));
System.out.println(strList.remove(1));

更严重的情况,还会出现角标越界:

List<String> strList = new ArrayList<>();
strList.add("str1");
strList.add("str2");
strList.add("str3");

System.out.println(strList.remove(0));
System.out.println(strList.remove(1));
System.out.println(strList.remove(2));

结果:
str1
str3
并且抛出如下异常:
java.lang.IndexOutOfBoundsException: Index: 2, Size: 1

3、集合属于引用传递,使用时一定要注意

原集合:

List<String> strList = new ArrayList<>();
strList.add("str1");
strList.add("str2");
strList.add("str3");

for (String str : strList) {
System.out.println("strList:" + str);
}

结果:
strList:str1
strList:str2
strList:str3

引用传递,调用方法后:

public List<String> addStrList1(List<String> strList) {
strList.add("str4");
strList.add("str5");
return strList;
}

addStrList1(strList);
for (String str : strList) {
System.out.println("strList:" + str);
}

结果:
strList:str1
strList:str2
strList:str3
strList:str4
strList:str5

值传递,调用方法后:

public List<String> addStrList2(List<String> strList) {
List<String> strList2 = new ArrayList<>(strList);
strList2.add("str6");
strList2.add("str7");
return strList2;
}

List<String> strList2 = addStrList2(strList);
for (String str : strList) {
System.out.println("strList:" + str);
}
System.out.println("================================");
for (String str : strList2) {
System.out.println("strList2:" + str);
}

结果:
strList:str1
strList:str2
strList:str3
strList:str4
strList:str5
================================
strList2:str1
strList2:str2
strList2:str3
strList2:str4
strList2:str5
strList2:str6
strList2:str7


标签:Java,List,System,println,add,集合,操作,strList,out
From: https://blog.51cto.com/u_15824687/5747141

相关文章

  • Java参数校验
    基本步骤引入pom依赖书写需要校验的实体书写实体校验工具类编写测试代码引入pom依赖<!--参数校验--><!--start--><dependency><gr......
  • Java集合引用传递问题(集合的浅复制和深复制)
    浅复制实体类packagecom.ahut.entity;importjava.io.Serializable;importjava.util.Date;/****@ClassName:Demo*@Description:*@authorcheng*@datepubliccl......
  • Oracle-19C 相关操作命令整理
    ----运行oracle19c镜像dockerrun--nameoracle19c-p1521:1521-p5500:5500\-eORACLE_SID=orcl\-eORACLE_PDB=orclpdb1\-eORACLE_PWD=sysadmin01\-eORACLE_......
  • 简记操作系统中逻辑地址到物理地址的转换
    这里稍微整理一下操作系统中进程逻辑地址到实际物理地址中的转换,可惜开始没注意到用的笔太细了,当然,本身写字也比较随意。#include<iostream>usingnamespacestd;#def......
  • Java注解
    Java注解注解Annotation//自定义注解必须是在@interface//如下自定义注解Report//default用于给注解参数设置默认值public@interfaceReport{inttype()de......
  • 集合
    集合最主要的特点就是:不支持元素的重复(自带去重功能)、并且内容无序语法方法代码案例#定义集合my_set={"传智教育","黑马程序员","itheima","传智教......
  • OpenCV-选取图像局部区域(java版)
    @​​TOC​​​​Mat类提供了多种获取图像局部区域的方法​​1.imshow()1.单行或单列选择获取图像的某一行或某一列,可以使用row()函数或者col()函数方法说明row(inty)提取......
  • 操作系统:Centos、Ubuntu和Kali等 Linux系统下载【三】
    ​​https://developer.aliyun.com/mirror/​​......
  • JAVA基础-层级结构
    最近开始学习JAVA,接触后端项目,发现跟iOS的区别挺大的,在这里记录一下iOS谈到项目结构,无非就是MVC,再加上一些自定义的文件夹,管理类,资源类,三方类,拓展,公共UI、弹框等等,比较随......
  • Deepin操作系统虚拟机玩3D
    1.下载VMwarePlayer下载地址:[VMwareWorkstation16.2.4PlayerforLinux64-bit](https://customerconnect.vmware.com/en/downloads/details?downloadGroup=WKST-PLA......