Java集合框架(一)- ArrayList类

6 篇文章 0 订阅
1 篇文章 0 订阅

Java集合框架 - ArrayList类

ArrayList类是List接口的实现类。

我们来看一些ArrayList类中的一些方法操作以及与其相关的一些操作。

1)ArrayList类中的一些方法

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        //无参构造方法,创建了一个长度为0的数组
        /*
         * 有参数的构造方法,指定了初始大小
         * 本质上就是创建了一个参数大小的数组
         */
        ArrayList list = new ArrayList();

        //1.添加元素
        /*
         * add:
         * 1.先将底层数组扩容
         * 2.将元素赋值到数组对应位置
         * 3.返回true
         */
        list.add(10);
        list.add("abc");
        list.add(0,12);

        //获取元素
        System.out.println(list.get(1));

        //修改元素
        /*
         * 返回值为 修改之前的值
         */
        Object e = list.set(0,"first");
        System.out.println(list.get(0));
        System.out.println(e);

        //删除元素
        //按照下标删除,返回值为删除的元素
        //只会删除遇到的第一个元素
        /*
         * 如果remove的参数为int,则按照下标删除
         * 参数为Integer,则按照元素删除
         */
        Object element = list.remove(2);
        //按照元素删除,返回的是布尔值
        Object element1 = list.remove(new Integer(12));
        System.out.println(list.get(0));
        System.out.println(element);
        System.out.println(element1);
    }
}
"C:\Program Files\Java\jdk1.8.0_172\bin\java.exe" ...
10
first
12
first
abc
false

Process finished with exit code 0

2)ArrayList中对元素的遍历

import java.util.ArrayList;
import java.util.Iterator;

public class Main {
    public static void main(String[] args) {
        //1.8版本之后泛型后面的尖括号不用加类型
        ArrayList<String> list = new ArrayList<>();
        list.add("aa");
        list.add("bb");
        list.add("cc");
        list.add("dd");
        //size() 获取元素的个数
        System.out.println("size = " +list.size());
        //遍历
        for(int i = 0;i<list.size();i++) {
            System.out.print(list.get(i) +" ");
        }
        System.out.println();
        for(String str : list) {
            System.out.print(str +" ");
        }
        System.out.println();
        //迭代器:将Collection集合的遍历统一起来
        Iterator<String> iterator = list.iterator();
        while(iterator.hasNext()) {
            String e = iterator.next();
            //删除当前迭代到的对象
            //通过迭代器删除元素,不会影响整个遍历过程
            iterator.remove();
            System.out.print(e +" ");
        }
        System.out.println();
        System.out.println("size = " +list.size());
    }
}
"C:\Program Files\Java\jdk1.8.0_172\bin\java.exe" ...
size = 4
aa bb cc dd 
aa bb cc dd 
aa bb cc dd 
size = 0

Process finished with exit code 0

在上述中我们出现了一个迭代器的概念,我们对其进行一个说明:迭代器我们可以将其看作为一个游标,我们对其进行一次迭代,便是游标向下指一次。

其中迭代器中常用用的方法有三种:next(),hasnext(),romove()

Iterator迭代器中的三个常用的方法

1).hasnext()

       判断下一个值存不存在。

2).naxt()

       将迭代器指针移动到当前位置的下一个值

3).remove()

       删除迭代到的当前对象

3)list 集合中独有的迭代器

list中独有的迭代器是一个双向的迭代器,不仅仅只是能从前往后遍历,也可以从后往前遍历。

//上述中的迭代器只能从上往下找,而List中独有的迭代器还可以从下往上找
ListIterator<String> listIterator = list.listIterator();
//从上往下打印
while(listIterator.hasNext()) {
	System.out.print(listIterator.next() +" ");
}
//从下往上打印
System.out.println();
System.out.println("---------------");
while(listIterator.hasPrevious()) {
	System.out.print(listIterator.previous() +" ");
}

 4)List集合中一些其他的方法

import java.util.*;

public class Main {
    public static void main(String[] args) {
        ArrayList<String> list_1 = new ArrayList<String>();
        list_1.add("aa");
        list_1.add("bb");
        list_1.add("bb");
        list_1.add("cc");
        list_1.add("dd");
        list_1.add("ee");

        //根据元素获取下标,第一次出现时的下标
        //-1,该元素不存在
        int index = list_1.indexOf("bb");
        System.out.println(index);
        //最后一次出现的下标
        System.out.println(list_1.lastIndexOf("bb"));

        //判断是否包含某个元素
        System.out.println(list_1.contains("aa"));

        //删除集合中所有元素
//        list_1.clear();

        //将集合变为一个数组
        System.out.println(Arrays.toString(list_1.toArray()));

        //是否为空,true没有元素,false有元素
        System.out.println(list_1.isEmpty());
    }
}
"C:\Program Files\Java\jdk1.8.0_172\bin\java.exe" ...
1
2
true
[aa, bb, bb, cc, dd, ee]
false

Process finished with exit code 0

5)两个集合之间一些操作的方法

import java.io.StringWriter;
import java.util.*;

public class Main {
    public static void main(String[] args) {
		ArrayList<String> list_1 = new ArrayList<String>();
		list_1.add("aa");
		list_1.add("bb");
		list_1.add("bb");
		list_1.add("cc");
		list_1.add("dd");
		list_1.add("ee");
   
		ArrayList<String> list_2 = new ArrayList<String>();
		list_2.add("aa");
		list_2.add("bb");
		list_2.add("bb");
		list_2.add("cc");
		list_2.add("ff");
		list_2.add("gg");
		
		//子集
		List<String> list = list_1.subList(1,3);
		System.out.println(list.toString());
   
//        //合集 将参数集合中所有的元素添加到调用方法的集合中
//        list_1.addAll(list_2);
//        System.out.println(list_1);
        list_1.addAll(index,c)
//
//        //差集 将List_1中List_1和List_2的交集删除
//        list_1.removeAll(list_2);
//        System.out.println(list_1);

		//交集
		list_1.retainAll(list_2);
		System.out.println(list_1);
   
		//拷贝集合
		ArrayList<String> temp = new ArrayList<>(list_1);
		System.out.println(temp);
   
		//数组和集合的转换
		Object[] array = list_1.toArray();
		for(Object o : array) {
           System.out.print(o +" ");
		}
		System.out.println();
		System.out.println("---------------");
		String[] arr = new String[list_1.size()];
		list_1.<String>toArray(arr);
		for(String str : arr) {
           System.out.print(str +" ");
		}
		System.out.println();
   
		int[] array_int = {1,2,3};
		/*
		 * asList:如果参数为基本数据类型数组,
		 * 则将整个数组作为集合的一个元素
		 * 如果是对象类型的数组,将数组中的元素转换到集合中
		 */
		List list1 = Arrays.asList(array_int);
		Integer[] array_integer = {1,2,3};
		List list2 = Arrays.asList(array_integer);
		System.out.println(list1);
		System.out.println(list2);
	}
}
"C:\Program Files\Java\jdk1.8.0_172\bin\java.exe" ...
[bb, bb]
[aa, bb, bb, cc]
[aa, bb, bb, cc]
aa bb bb cc 
---------------
aa bb bb cc 
[[I@4554617c]
[1, 2, 3]
   
Process finished with exit code 0

OK ! 完成,上述中的ArrayList是比较详细的。如有疑问,评论,留言。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值