Java基础-----集合类(三)

请添加图片描述


今天主要学习集合类框架

1. Arraylist

在这里插入图片描述
Collection:是List和Set的父接口,里面包含了一些公用的方法

List:是一个有序的、不唯一的接口

ArrayList:是List的一个实现类,底层数据结构是数组

public class Test {
    public static void main(String[] args) {
        /*Collection collection=new ArrayList();
        List list;
        ArrayList arrayList;*/
        //ArrayList的特点:有顺序的,不唯一
        ArrayList<Integer> list=new ArrayList<>();
        System.out.println(list.toString());//[]
        list.add(12);
        list.add(23);
        list.add(45);
        list.add(10);
        list.add(10);
        System.out.println(list.toString());//[12, 23, 45, 10,10]
    }
}

ArrayList循环遍历

public class TestArrayList {
    public static void main(String[] args) {
        List<String> list=new ArrayList<>(10);
        list.add("AAA");
        list.add("BBB");
        list.add("CCC");
        //集合的循环遍历方式
        //遍历方式1
        /*for(int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }*/
        //遍历方式2
        /*for (String s : list) {
            System.out.println(s);
        }*/
        //遍历方式3
        /*Iterator<String > iterator=list.iterator();
        while (iterator.hasNext()){//判断是否有下一个元素
            String s = iterator.next();
            System.out.println(s);
        }*/
        /*for(Iterator<String > iterator=list.iterator();iterator.hasNext();){
            System.out.println(iterator.next());
        }*/
        //遍历方式4  lambda
        list.forEach(System.out::println);

    }
}

2. Arraylist常用方法

  • add(Object obj):在集合后面加入元素,会返回一个boolean类型的值

  • add(int index,Object obj):在指定索引位置前面插入一个元素

  • size():获取当前集合中元素的个数

  • isEmpty():判断当前集合中是否为空

  • clear():从集合中删除所有元素

public class TestArrayList2 {
    public static void main(String[] args) {
        ArrayList<Integer> list=new ArrayList<>();
        list.add(123);
        list.add(456);
        System.out.println(list);

        list.add(1,666);
        System.out.println(list);
        System.out.println(list.size());

        boolean b = list.isEmpty();
        System.out.println("b = " + b);
        list.clear();
        boolean b1 = list.isEmpty();
        System.out.println("b1 = " + b1);
    }
}

运行结果:
在这里插入图片描述

  • addAll(Collection c):在当前集合中加入另一个集合的元素,要求两个集合使用的泛型相同(如果一个是Integer,一个是String,就会报错)

  • addAll(int index,Collection c):在当前集合指定位置之前,加入另一个集合的元素

		ArrayList<Integer> list=new ArrayList<>();
        list.add(123);
        list.add(456);

        ArrayList<Integer> list1=new ArrayList<>();
        list1.add(111);
        list1.add(222);

        list.addAll(list1);
        System.out.println(list);//[123, 456, 111, 222]
		list.addAll(1,list1);
        System.out.println(list);//[123, 111, 222, 456]
  • remove(int index):移除指定索引位置的元素,并将该元素返回

  • remove(Object obj):移除对应元素,如果有多个相同值,只移除第一个找到的元素,如果是整数类型,要封装成包装类,否则会把此元素当成索引来处理。返回boolean类型的值,是否移除成功

  • removeAll(Collection c):从当前集合中移除参数集合中所有包含的元素

		ArrayList<Integer> list=new ArrayList<>();
        list.add(123);
        list.add(456);
        list.add(111);
        list.add(222);
        System.out.println(list);
        //list.remove(111);//报错:java.lang.IndexOutOfBoundsException
        //移除111这个元素
        list.remove(Integer.valueOf(111));
        System.out.println(list);//[123, 456, 222]

        //如果ArrayList中有两个相同的元素
        list.add(111);
        list.remove(Integer.valueOf(111));
        System.out.println(list);
		ArrayList<Integer> list=new ArrayList<>();
        list.add(123);
        list.add(456);
        list.add(111);
        list.add(222);
        System.out.println(list);

        //移除指定位置的元素
        list.remove(1);
        System.out.println(list);//[123, 111, 222]
		ArrayList<Integer> list=new ArrayList<>();
        list.add(123);
        list.add(456);
        list.add(111);
        list.add(222);
        System.out.println(list);//[123, 456, 111, 222]

		ArrayList<Integer> list1=new ArrayList<>();
        list1.add(123);
        list1.add(111);
        list.removeAll(list1);
        System.out.println(list);//[456, 222]
  • retainAll(Collection c):在当前集合中保留参数集合中所有包含的元素
		ArrayList<Integer> list=new ArrayList<>();
        list.add(123);
        list.add(456);
        list.add(111);
        list.add(222);
        System.out.println(list);
        List<Integer> list1= Arrays.asList(111,222);
        boolean b = list.retainAll(list1);
        System.out.println(list);//[111, 222]
  • contains(Object o):判断当前集合中是否包含给定参数的元素,返回boolean类型的值

  • containsAll(Collection c):判断当前集合中是否包含给定参数集合中的所有元素

		ArrayList<Integer> list=new ArrayList<>();
        list.add(123);
        list.add(456);
        list.add(111);
        list.add(222);
        System.out.println(list);
        boolean b = list.contains(333);//false
        System.out.println("b = " + b);
        List<Integer> list1= Arrays.asList(222);
        boolean b1 = list.containsAll(list1);
        System.out.println("b1 = " + b1);//true
		List<Integer> list2=Arrays.asList(111,333);
		boolean b2 = list.containsAll(list2);
        System.out.println("b2 = " + b2);//false
  • toArray():以正序的方式,返回一个包含所有元素的对象数组
		ArrayList<Integer> list=new ArrayList<>();
        list.add(123);
        list.add(456);
        list.add(111);
        list.add(222);
        System.out.println(list);
        Object[] objects = list.toArray();
        for (Object object : objects) {
            System.out.println(object);
        }
  • indexOf(Object):查找参数在当前集合中第一次出现的索引位置

  • lastIndexOf(Object):查找参数在当前集合中最后一次出现的索引位置

 		ArrayList<Integer> list=new ArrayList<>();
        list.add(123);
        list.add(456);
        list.add(111);
        list.add(222);
        list.add(456);
        System.out.println(list);
        int i = list.indexOf(456);
        int j = list.lastIndexOf(456);
        System.out.println(i+" , "+j);//1,4

		List<Integer> list1 = list.subList(0, 3);
        System.out.println("list1 = " + list1);//list1 = [123, 456, 111]
  • subList(int index,int end):对当前集合进行截取,从起始位置(包含)截取到结束位置(不包含),返回一个新的List集合

  • iterator():获取集合的迭代器

  • listIterator():获取集合的List迭代器

  • set(int index,Object obj):设置索引位置的元素为第二个参数数据

【注意】创建一个固定大小的集合,不可以添加数据,也不可以删除

public class TestIterator {
    public static void main(String[] args) {
        //创建一个固定大小的集合,不可以添加数据,也不可以删除
        //报错:java.lang.UnsupportedOperationException
        List<String> list= Arrays.asList("aa","bb","cc","dd");
        //list.add("ee");
        //list.remove(0);
        for (String s : list) {
            System.out.println(s);
        }

    }
}