Java学习 Day14 Collection List ArrayList

1.Collection 接口练习以及常用方法的使用 迭代器使用

package cn.tedu.collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;

/**
 * 本类用来测试Collection接口
 */
public class TestCollection {
    public static void main(String[] args) {
        //1.创建Collection接口相关对象
        //Collection c = new Collection();//报错,因为接口不能实例化
        /**1.<Integer>是泛型,用来约束集合的元素类型,只能写引用类型,不能写基本类型*/
        Collection<Integer> c = new ArrayList<Integer>();

        //2.1测试常用方法--测试单个集合
        c.add(100);//向集合中添加元素
        c.add(200);//向集合中添加元素
        c.add(300);//向集合中添加元素
        c.add(400);//向集合中添加元素
        c.add(500);//向集合中添加元素
        System.out.println(c);//直接打印查看集合中的元素

        //c.clear();//[],清空集合中的元素
        System.out.println(c.contains(300));//true,判断集合中是否包含指定元素300
        System.out.println(c.hashCode());//返回此集合对应的哈希码
        System.out.println(c.isEmpty());//false,判断集合是否为空
        System.out.println(c.remove(100));//true,移除集合中的指定元素100
        System.out.println(c);
        System.out.println(c.size());//获取集合中元素的个数,类似数组的长度
        System.out.println(c.equals(200));//false,判断集合对象与200是否相等
        System.out.println(c.toArray());//[Ljava.lang.Object;@1b6d3586
        System.out.println(Arrays.toString(c.toArray()));//把集合转为数组,查看数组元素需要使用工具类

        //2.2测试集合间的操作
        Collection<Integer> c2 = new ArrayList<Integer>();
        c2.add(2);//给c2集合添加元素
        c2.add(4);//给c2集合添加元素
        c2.add(6);//给c2集合添加元素
        System.out.println(c2);

        c.addAll(c2);//把c2集合中的元素添加到c集合中
        System.out.println(c);
        System.out.println(c.contains(c2));//false,查看c集合是否包含一个叫c2的元素
        System.out.println(c.containsAll(c2));//true,查看c集合是否包含c2集合的所有元素
        System.out.println("——————————————————————————————————————————————");
        System.out.println(c);
        System.out.println(c.retainAll(c2));//取c集合中属于c2集合的所有元素"交集"
        System.out.println(c);
        System.out.println("——————————————————————————————————————————————");

        System.out.println(c.removeAll(c2));//true,移除c集合中输入c2集合中的所有元素
        System.out.println(c);

        //2.3用来遍历/迭代集合中的元素
        /**0.需要获取这个集合的迭代器
         * 1.如何获取迭代器c.iterator()
         * 2.判断集合是否有下个元素it.hasNext()
         * 3.获取当前迭代到的元素it.next()
         * */
        c.add(1);
        c.add(2);
        c.add(3);

        Iterator<Integer> it = c.iterator();
        //通过iterator迭代器,循环获取集合中的所有元素
        while(it.hasNext()){
            //hasNext用来判断集合是否有下个集合,有就返回true,继续循环取值
            Integer num = it.next();//next()用来获取迭代到的元素
            System.out.println(num);
        }

    }
}

2.List接口练习

package cn.tedu.collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**本类用于测试List接口*/
public class TestList {
    public static void main(String[] args) {
        //1.创建List接口多态对象,注意List是接口,不能实例化
        List<String> list = new ArrayList<String>();

        //2.测试继承自Collection接口中的方法
        list.add("大力娃");
        list.add("千顺娃");
        list.add("头铁娃");
        list.add("喷火娃");
        list.add("喷水娃");
        list.add("隐身娃");
        list.add("小紫娃");
        System.out.println(list);//查看集合中的元素
        //list.clear();
        //System.out.println(list);//[]

        System.out.println(list.remove("千顺娃"));
        System.out.println(list.size());//获取集合中元素的个数
        System.out.println(list.hashCode());//获取集合对象的哈希码
        System.out.println(list.isEmpty());//判断集合是否为空
        System.out.println(list.contains("小紫娃"));//判断集合中是否有指定元素
        System.out.println(list.equals("喷火娃"));//false,"喷火娃是否与集合list相同"
        System.out.println(Arrays.toString(list.toArray()));//将集合转为数组

        //3.测试List接口特有的方法--都是可以根据索引进行操作的方式
        list.add("小蝴蝶");
        System.out.println(list);
        list.add(0,"蛇精");//在指定索引处添加元素,首个位置下标为0
        System.out.println(list);
        System.out.println(list.get(2));//头铁娃,获取指定索引处的元素
        System.out.println(list.indexOf("小蝴蝶"));
        list.add("小蝴蝶");
        System.out.println(list.lastIndexOf("小蝴蝶"));
        System.out.println(list);//判断指定元素最后一次出现的位置
        System.out.println(list.remove(5));//根据索引移除指定元素
        System.out.println(list);
        System.out.println(list.set(7, "蝎子精"));//重置指定下标处的元素值
        System.out.println(list);
        List<String> sublist = list.subList(3, 7);//截取子串,含头不含尾[3,7)
        System.out.println(sublist);

        //4.测试集合间的操作
        List<String> list2 = new ArrayList<String>();
        list2.add("1");
        list2.add("2");
        list2.add("3");
        System.out.println(list.addAll(list2));//把list2追加到list集合的最后
        System.out.println(list);
        System.out.println(list.addAll(1,list2));//把list2集合的所有元素添加到指定位置
        System.out.println(list);
        System.out.println(list.containsAll(list2));//判断list集合是否包含list2集合中的所有元素
        System.out.println(list.retainAll(list2));//保留list集合中属于list2集合中的所有元素,交集
        System.out.println(list);
        System.out.println(list.removeAll(list2));//移除list集合中属于list2集合中的所有内容
        System.out.println(list);
    }
}

 

3.List迭代器练习

package cn.tedu.collection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/**本类用于测试List的迭代*/
public class TestList2 {
    public static void main(String[] args) {
        //1.创建List接口对象
        List<String> list = new ArrayList<String>();

        //2.向集合中添加元素
        list.add("喜羊羊");
        list.add("美羊羊");
        list.add("费羊羊");
        list.add("小肥羊");
        list.add("烤全羊");

        //3.测试集合的迭代
        /**集合的迭代方式:
         * 1.for循环
         * 2,增强for循环\高效for\foreach循环
         * 3.iterator迭代器循环
         * */
        //方式一:因为List集合是有序的,元素是有下标的,所以可以根据下标进行遍历
        //从哪开始 到哪结束 怎么变化
        for (int i = 0; i < list.size(); i++) {
            //根据下标获取集合中的对应位置上的元素
            String s = list.get(i);
            System.out.println(s);

        }
        System.out.println("****方式一****");
        //12:3 3是要遍历的元素 2是遍历得到的元素的类型 1是遍历得到的元素的名字
        for(String s :list){
            System.out.println(s);
        }
        System.out.println("****方式二****");
        //方式三:通过集合对象的迭代器进行迭代
        /**1.获取指定集合的迭代器*/
        Iterator<String> it = list.iterator();
        /**由于我们不知道集合有多少元素,所以我们用while循环遍历集合所有元素*/
        while (it.hasNext()){
            System.out.println(it.next());
        }
        System.out.println("****方式三****");
        System.out.println(list);

        //方式四:listIterator()是List接口独有的
        //listIterator是Iterator的子接口,可以拥有父接口的方法,还拥有自己独有方法(逆序遍历)
        ListIterator<String> it2 = list.listIterator();
        while (it2.hasNext()){
            System.out.println(it2.next());
        }
        System.out.println("****方式四****");

    }
}

4.ArrayList测试练习

package cn.tedu.collection;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.ListIterator;

/**本类用于测试ArrayList的相关内容*/
public class TestArrayList {
    public static void main(String[] args) {


        //1.创建对象
        //底层会自动带我们创建数组存放对象,默认初始容量为10
        ArrayList<Integer> arrayList = new ArrayList<Integer>();
        //2.向集合添加元素
        arrayList.add(100);
        arrayList.add(200);
        arrayList.add(300);
        arrayList.add(400);
        System.out.println(arrayList);
        //3.开始测试--单个集合
        System.out.println(arrayList.contains(100));//判断是否包含元素100
        System.out.println(arrayList.get(0));//根据下标获取指定元素
        System.out.println(arrayList.indexOf(500));//获取指定元素下标
        System.out.println(arrayList.set(2,200));//给集合的指定下标处添加元素
        System.out.println(arrayList);
        System.out.println(arrayList.lastIndexOf(200));//获取指定元素最后一次出现的位置
        System.out.println(arrayList.isEmpty());//判断集合是否为空
        System.out.println(arrayList.remove(1));//移除指定下标处的元素
        //arraylist.remove(300);
        /**这样写会报错:数组下标越界,index=300,size=4
         * 这个方法是根据下标值来删除元素的,而本集合没有300的下标,所以数组下标越界
         * 如果根据具体元素内容移除元素,需要先把int类型的数据转换成Integer数据类型*/
        arrayList.add(300);
        System.out.println(arrayList);
        System.out.println(arrayList.remove(Integer.valueOf(300)));
        System.out.println(arrayList);
        System.out.println(arrayList.size());//获取集合中元素的个数
        System.out.println(Arrays.toString(arrayList.toArray()));//集合转数组

        //迭代方式
        System.out.println("迭代方式一");
        for (int i = 0; i < arrayList.size(); i++) {
            System.out.println(arrayList.get(i));
        }
        System.out.println("迭代方式二");
        for(Integer i:arrayList){
            System.out.println(i);
        }
        System.out.println("迭代方式三");
        Iterator<Integer> it = arrayList.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }
        System.out.println("迭代方式四");
        ListIterator<Integer> it1 = arrayList.listIterator();

        while (it1.hasNext()){
            System.out.println(it1.next());

        }
    }
}

 

上一篇:day14


下一篇:day14 五层协议 网络通信原理