java中的集合ArrayList
创建集合对象有3种形式
1,不需要传递构造参数,直接new就可以,此时底层数组为空数组。
2,构造参数需要传递一个int类型的值, 用于设置底层数组的长度
3,构造参数需要传递一个Collection集合类型的值,用于将集合中的数据放置在当前的集合中。
第1种方式创建数组
package goodStudy;
import java.util.ArrayList;
public class goodStudy{
public static void main(String[] args) {
ArrayList arrList = new ArrayList();
// 输出的是一个空数组
System.out.print(arrList);
}
}
往集合中添加数据 add
package goodStudy;
// ArrayList在java-->util包中
import java.util.ArrayList;
public class goodStudy{
public static void main(String[] args) {
ArrayList arrList = new ArrayList();
arrList.add("添加一个数据");
// 输出的是一个空数组
System.out.print(arrList);
}
}
往集合中添加数据 add('添加到哪一个位置', '添加的值')
ArrayList arrList = new ArrayList();
arrList.add("嘿嘿01");
arrList.add("嘻嘻02");
arrList.add("哈哈03");
arrList.add(0, "第1项");
// 输出的是: arrList:[第1项, 嘿嘿01, 嘻嘻02, 哈哈03]
System.out.println("arrList:" + arrList);
添加另外一个集合addAll
ArrayList arrList = new ArrayList();
arrList.add("嘿嘿01");
ArrayList otherArr = new ArrayList();
otherArr.add("otner_01");
otherArr.addAll(arrList);
// 输出的是:otherArr:[otner_01, 嘿嘿01]
System.out.println("otherArr:" + otherArr);
集合默认时长度10
在添加数据时,如果集合中没有任何数据,那么底层会创建长度为10的数组
集合添加的个数大于集合的长度,会报错嘛?
package goodStudy;
//ArrayList在java--> util包中
import java.util.ArrayList;
public class goodStudy{
public static void main(String[] args) {
ArrayList arrList = new ArrayList(3);
arrList.add("嘿嘿01");
arrList.add("嘻嘻02");
arrList.add("哈哈03");
arrList.add("呲呲04");
// 会报错嘛?
System.out.println(arrList);
}
}
不会报错的。为啥?
因为:在底层创建了一个更大的数组
获取集合的长度 size
ArrayList arrList = new ArrayList();
arrList.add("嘿嘿01");
arrList.add("嘻嘻02");
arrList.add("哈哈03");
arrList.add("呲呲04");
System.out.println(arrList.size());
// 输出 4
获取集合中指定位置的数据 get
ArrayList arrList = new ArrayList();
arrList.add("嘿嘿01");
arrList.add("嘻嘻02");
arrList.add("哈哈03");
arrList.add("呲呲04");
System.out.print(arrList.get(2));
// 输出的时: 哈哈03
遍历集合中的数据 for循环
public class goodStudy{
public static void main(String[] args) {
ArrayList arrList = new ArrayList();
arrList.add("嘿嘿01");
arrList.add("嘻嘻02");
arrList.add("哈哈03");
arrList.add("呲呲04");
for(int i =0;i<arrList.size();i++){
System.out.print("当前的值时"+ arrList.get(i));
}
}
}
遍历集合中的数据 for循环 [不考虑集合的顺序] 特殊的for循环
当我们遍历集合时,如果不考虑集合的顺序,可以使用下面的 for Object循环
ArrayList arrList = new ArrayList();
arrList.add("嘿嘿01");
arrList.add("嘻嘻02");
arrList.add("哈哈03");
arrList.add("呲呲04");
for(Object obj:arrList ){
System.out.println("当前的值时"+ obj);
}
更新数据 set
ArrayList.set('跟新数据的位置', '更新的值')
set的返回值表示的是:当前这一项更新前的数据
ArrayList arrList = new ArrayList();
arrList.add("嘿嘿01");
arrList.add("嘻嘻02");
arrList.add("哈哈03");
arrList.add("呲呲04");
// set的返回值表示的是:当前这一项更新前的数据
Object oldValue = arrList.set(0, "第1项");
//输出的是 嘿嘿01
System.out.println(oldValue);
System.out.println(arrList);
删除数据 remove
ArrayList.remove(需要删除的数据的位置)
remove的返回值表示的是:被删除的数据
ArrayList arrList = new ArrayList();
arrList.add("嘿嘿01");
arrList.add("嘻嘻02");
arrList.add("哈哈03");
arrList.add("呲呲04");
Object oldValue = arrList.remove(0);
// 删除前这一项的值:嘿嘿01
System.out.println("删除前这一项的值:" + oldValue);
// arrList:[嘻嘻02, 哈哈03, 呲呲04]
System.out.println("arrList:" + arrList);
清空集合和判断集合是否是空
ArrayList arrList = new ArrayList();
arrList.add("嘿嘿01");
// 清空这个集合
arrList.clear();
// 判断集合是否是空
System.out.println("集合是否是空:" + arrList.isEmpty());
removeAll() 方法从一个集合中移除所有在另一个集合中存在的元素。
ArrayList arrList = new ArrayList();
arrList.add("嘿嘿01");
arrList.add("哈哈02");
ArrayList list = new ArrayList();
list.add("哈哈02");
// 从arrList集合中删除list集合中存在的元素
arrList.removeAll(list);
// 输出 ["嘿嘿01"]
System.out.println("arrList: "+ arrList);
是否包含某个元素contains, 返回布尔类型的值
ArrayList arrList = new ArrayList();
arrList.add("嘿嘿01");
// 判断 arrList 这个数组是否包含 嘿嘿01 这个元素
Boolean flag = arrList.contains("嘿嘿01");
// 输出的是true
System.out.println("flag:" + flag);
某个元素在集合中首次出现的位置 indexOf
indexOf: 元素在集合中首次出现位置(索引),如果元素不存在返回的值是 -1
ArrayList arrList = new ArrayList();
arrList.add("嘿嘿01");
arrList.add("哈哈02");
// 寻找 某个元素是在集合中的哪一个位置
int index = arrList.indexOf("哈哈02");
// 输出的是 1
System.out.println(index);
int notIndex = arrList.indexOf("哈哈");
// 输出的是 -1
System.out.println(notIndex);
某个元素在集合中最后一次出现的位置 lastIndexOf
它用于查找指定元素在列表中最后一次出现的位置(索引)
与indexOf方法类似,
如果找到了该元素,lastIndexOf 方法会返回其索引(从0开始),如果未找到,则返回-1。
toArray 将集合转化为数组
ArrayList arrList = new ArrayList();
arrList.add("嘿嘿01");
arrList.add("哈哈02");
Object[] arr = arrList.toArray();
System.out.println(arr);
克隆一个集合[创建集合对象有3种形式]
public class goodStudy{
public static void main(String[] args) {
ArrayList arrList = new ArrayList();
arrList.add("嘿嘿01");
arrList.add("哈哈02");
// 克隆一项
ArrayList otherList = new ArrayList(arrList);
System.out.println(otherList);
otherList.set(0, "第一哈哈哈");
// 输出的是: otherList[第一哈哈哈, 哈哈02]
System.out.println("otherList" +otherList);
// 输出的是: arrList[嘿嘿01, 哈哈02]
System.out.println("arrList"+ arrList);
}
}
java中的集合ArrayList的更多相关文章
- Java中list集合ArrayList 中contains包含的使用
Java中list集合ArrayList 中contains包含的使用 https://blog.csdn.net/qq_38556611/article/details/78774690
- Java中的集合List、ArrayList、Vector、Stack(三)
List接口 List集合代表一个有序集合,集合中每一个元素都有其对应的顺序索引.List集合容许使用重复元素,可以通过索引来访问指定位置的集合对象. ArrayList和Vector实现类 Arra ...
- Java 中的集合接口——List、Set、Map
Java 中的集合接口——List.Set.Map 什么叫集合:集合就是Java API所提供的一系列类的实例,可以用于动态存放多个对象.这跟我们学过的数组差不多,那为什么我们还要学集合,我们看看数组 ...
- Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法
Java中List,ArrayList.Vector,map,HashTable,HashMap区别用法 标签: vectorhashmaplistjavaiteratorinteger ArrayL ...
- java中对集合对象list的几种循环访问
java中对集合对象list的几种循环访问的总结如下 1 经典的for循环 public static void main(String[] args) { List<String> li ...
- 菜鸟日记之 java中的集合框架
java中的集合框架图 如图所示:java中的集合分为两种Collection和Map两种接口 可分为Collection是单列集合和Map的双列集合 Collection单列集合:继承了Iterat ...
- C#与java中的集合区别
集合一般的操作 插入: add 删除: remove 查找: contains,remove java中的集合 注意哪些是接口,哪些是实现类 使用集合的时候 1. ...
- java中list集合的内容,如何使用像数据库中group by形式那样排序
java中list集合的内容,如何使用像数据库中group by形式那样排序,比如:有一个 List<JavaBean> 他中包含了一些如下的内容JavaBean:name mone ...
- (转)java中对集合对象list的几种循环访问总结
Java集合的Stack.Queue.Map的遍历 在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack.Queue.Map类型的遍历,还是有一 ...
- java中的集合操作类(未完待续)
申明: 实习生的肤浅理解,如发现有错误之处.还望大牛们多多指点 废话 事实上我写java的后台操作,我每次都会遇到一条语句:List<XXXXX> list = new ArrayList ...
随机推荐
- BeanStalkd 做队列服务
今天无意间看到这个仓库讲php关于 BeanStalkd 的扩展,然后就去了解了一下beanstalkd,才知道它可以用来做队列服务. 话不多说,安装一下试试. 首先 sudo apt search ...
- Myeclipse优化:自动转义字符串中的特殊字符
在Myeclipse或者Eclipse中,将一段带引号(或其他的需要转义)字符串黏贴到引号中,双引号默认不会自动转义,手工一个一个去转义(变成\")的话实在是费事,这里记录一下让Myecli ...
- Hibernate 之Hibernate缓存
1.缓存:缓存是什么,解决什么问题? 位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为 Cache(摘自Robbin的<缓存技术浅谈>).目的:让数据 ...
- 基于Github gist的代码片段管理工具Lepton
Lepton主要功能 无限制的公共/私人片段 无限制的标签 语言组 Markdown支持 Jupyter Notebook查看器支持 macOS / Win / Linux客户端 GitHub Ent ...
- 集成Nacos
版本统一:Spring Boot 2.6.11,Spring Cloud 2021.0.4,Spring Cloud Alibaba 2021.0.4.0: Maven 仓库记得配置中央仓库,私服上有 ...
- Yacc笔记
语义动是一个C语句的序列 $$ 表是和相应产生式头的非终结符号关联的属性值 $i 表示和相应产生式体中第 i 个文法符号(终结符或非终结符号)关联的属性值 按照产生式规约时会执行关联的语义动作 对于 ...
- Python 调整Excel行高、列宽
在Excel中,默认的行高和列宽可能不足以完全显示某些单元格中的内容,特别是当内容较长时.通过调整行高和列宽,可以确保所有数据都能完整显示,避免内容被截断.合理的行高和列宽可以使表格看起来更加整洁和专 ...
- influxdb group by(1d) 查询注意事项
转载请注明出处: 在 InfluxDB 中,默认的时区是 UTC(协调世界时).所有的时间戳在数据写入时默认视为 UTC.这意味着如果没有在插入数据时指定其他时区,InfluxDB 会将所有时间数据处 ...
- Attribute application@label value=(xxx) from AndroidManifest.xml:8:16-37 is also present at [com.github.adrielcafe:AndroidAudioConverter:0.0.8] AndroidManifest.xml:11:18-50 value=(@string/app_name)
关于安卓编译错误Attribute application@label value=(xxx) from AndroidManifest.xml:8:16-37 is also present at ...
- TS 原理详细解读(6)--语法增量解析
呃....4年前开了一个坑,准备写一套完整介绍TS 原理的文章.坑很大,要慢慢填,今天就来填一个把. 本节主要介绍语法增量解析. 什么是增量解析 增量解析的意思是,如果我们直接从源码解析成语法树,叫做 ...