Java ArrayLIst集合使用方法

ArrayList简介

ArrayList类是一个可以动态修改的数组,与普通数组的区别是只需要声明数组名,不需要在开始的时候初始化数组大小,可以动态的添加和删除元素

ArrayList使用方法

ArrayList类位于java.util包中,使用前要导入包,格式为

import java.util.ArrayList;//导入包

使用时需要对类进行初始化,初始化格式为

ArrayList<E> objectName = new ArrayList<>();

其中 objectName为类名

E为泛型数据类型,只能为引用数据类型

基本数据类型和引用数据类型的对应表格为

基本数据类型 引用数据类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
bool Boolean

当数据类型为Integer,名字为IntDemo时,对该类初始化

ArrayList<Integer> IntDeom = new ArrayList<>();//生成一个名为IntDemo的表,存储int型数据

ArrayLIst类的add方法

该方法根据参数的不同有两种形式

add(E element)

对于初始化的IntDemo表,为 add(Integer element)

调用该方法添加前十一个自然数的代码如下

for(int i = 0; i <= 10; i ++){//将十一个自然数添加到表中
    IntDemo.add(i);
}

将26个小写英文字母添加到char类型的代码如下

ArrayList<Character> CharDemo = new ArrayList<>();//初始化定义一个char类型的表
for(char element = 'a'; element <= 'z'; a ++){//遍历26个英文字母并添加到表中
    CharDemo.add(element);
}

当参数有两个时,方法原型为

add(int index, E element)

index表示数组下标,element表示要添加进去的元素

该添加元素会占用原来元素的位置,后面的元素依次后移一位

如在第一个数组中在0 位置添加数据11时

11,0,1,2........

IntDemo.add(0, 11)

只能在该数组原有下标范围内添加,超过则报错

如IntDemo.add(13,11)则报错越界

ArrayList addAll方法

addAll(Collection<? extends E> c)//将一个集合完整的添加到另一个集合中

ArrayList<Integer> IntDemoCopy = new ArrayLIst<>();//创建一个新集合
IntDemoCopy.addAll(IntDemo);//使用addAll方法将IntDemo中的所有元素添加到IntDemoCopy中

addAll(int index, Collection<? extends E> c)//从该集合的某个下标开始添加,一定要判断是否扩展到该下标,如

IntDemoCopy.addAll(5, IntDemo);//从下标开始插入新的一个元素集

在中间插入会动态重组链表,如在1,2,3,4,5的二号下标开始插入7,8的结果为

1,2,7,8,3,4,5

获取其中的元素

get(int index)

根据下标获取元素

ArrayList数据的遍历

1、采用for循环,根据表的长度迭代输出

for(int i = 0; i < IntDemo.size(); i ++){//size是该动态数组容量的大小
    System.out.println(IntDemo.get(i));
}

2、采用for each语句,对表进行遍历输出

for(Integer element:IntDemo){
    System.out.println(element);
}

3、采用迭代器

迭代器是一个提供了迭代基本规则的接口

public interface Iterator<E>{
    boolean hasNext();//判断是否存在下一个元素
    E next();//获取下一个元素
    void remove();//移除元素
}

对该集合中所有的数据进行迭代,删除其中大于五的数据,进行迭代输出的结果为

Iterator<Integer> it = IntDemo.iterator();//迭代器初始化
//遍历所有数据并输出结果
while(it.hasNext()){//当下一个节点不为空的时候,进行遍历
    System.out.println(it.next());//next存储了当前节点的数据值,进行输出
}
//删除该集合中所有大于5的节点的数据值
it = IntDemo.iterator();//由于在上面的遍历中已经到最后一个节点,所以要进行初始化
while(it.hasNext()){//对所有节点进行遍历
    if(it.next() >= 5){//当值大于等于5的时候
        it.remove();//删除当前节点
    }
}
it = IntDemo.iterator();//初始化
while(it.hasNext()){
    System.out.println(it.next());
}

修改元素

set(int index, Integer element)//分别对应下标和元素

将该集合中所有大于等于5的数据赋值为0的写法如下

for(int i = 0; i < IntDemo.size(); i ++){
    if(IntDemo.get(i) >= 5){
        IntDemo.set(i, 0);
    }
}

不能用迭代器,因为迭代器中只有删除的方法,没有改变值的方法

删除元素

remove(int index)根据下标进行元素的删除

将该集合中前五个元素删除,由于该集合是动态数组结构,每次删除一个元素集合的结构都会改变,所以只需删除第一个元素五次就能达到删除前五个元素的目的,实现如下

for(int i = 0; i < 5; i ++){
    IntDemo.remove(0);
}

remove(object o)//删除出现的第一个元素o

比如删除第一个出现的1

IntDemo.remove(new Integer(1));//删除出现的第一个元素为1的元素
//由于默认情况下,1是int型,而对象的参数是object,要转化为Integer型,int转化为Integer的方法
Integer a = new Integer(1);

删除满足给定集合条件的元素

removeIf​(Predicate<? super E> filter)

如删除大于等于5的元素可以写为

IntDemo.removeIf(id -> id >= 5);//删除该集合中所有大于等于五的元素
//lambda写法 参数 -> 条件

//删除所有等于2的写法为
IntDemo.removeIf(id -> id == 2);

//删除所有在区间[2,5]中的元素写法为
IntDemo.removeIf(id -> id >= 2 && id <= 5);

查找元素

contains(Object o);如果包含返回true

如判断是否包含元素1的写法为

if(IntDemo.contains(new Integer(1)){
    System.out.println("包含元素1");
}

indexOf(Object o);返回该元素第一次出现的下标,不包含,则返回-

查找元素1第一次出现的下标的写法为

int FirstIndex = IntDemo.indexOf(new Integer(1));

元素排序

Collections类中有sort方法可以对ArrayLIst集合进行排序

import java.util.Collections;
Collections.sort(IntDemo);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章