List接口中的特有方法

package edu.pdsu.collection;

import edu.pdsu.pojo.NinePercent;
import org.junit.BeforeClass;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class ListMethodTest {
    private static List<String> list = new ArrayList<>();
    @BeforeClass
    public static void initList(){
        //初始化数据
        list.add("蔡徐坤");//哇真的是你啊
        list.add("陈立农");
        list.add("范丞丞");
        list.add("黄明浩");
    }
    public static void display(){
        for (String s : list) {
            System.out.println(s);
        }
    }

    @Test
    public void testAdd(){
        //向指定索引处加入元素
        list.add(1,"鸡哥");
        display();
        //蔡徐坤
        //鸡哥
        //陈立农
        //范丞丞
        //黄明浩
    }

    @Test
    public void testSet(){
        //修改指定索引处的元素
        list.set(0,"鸡哥");
        display();
        //鸡哥
        //陈立农
        //范丞丞
        //黄明浩
    }

    @Test
    public void testRemove(){
        //删除指定索引处的元素
        //Collection中的remove的参数是一个对象,删除equals相同的元素
        //迭代器的remove是无参的删除当前指向的元素
        list.remove(0);
        display();
        //陈立农
        //范丞丞
        //黄明浩
    }

    @Test
    public void testIndexOf(){
        //第一次出现的位置
        String KunKun = "蔡徐坤";
        list.add(KunKun);
        int i = list.indexOf(KunKun);
        System.out.println(KunKun + "第一次出现的位置是" + i);
        //蔡徐坤第一次出现的位置是0
    }

    @Test
    public void testLastIndexOf(){
        //最后一次出现的位置
        String KunKun = "蔡徐坤";
        list.add(KunKun);
        int i = list.lastIndexOf(KunKun);
        System.out.println(KunKun + "最后一次出现的位置是" + i);
        //蔡徐坤最后一次出现的位置是4
    }

    @Test
    public void testSubList(){
        //截取集合(左闭右开)
        List<String> newlist = list.subList(0, 2);
        //这种方式的遍历只适合于List家族
        for (int i = 0; i < newlist.size(); i++) {
            System.out.println(list.get(i));
            //蔡徐坤
            //陈立农
        }
    }

    @Test
    public void testOf(){
        //获取一个只读的集合
        List<Integer> number = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9);
//        number.add(110);
        //UnsupportedOperationException
        //不支持修改异常
    }

    @Test
    public void testSort(){
        //sort方法中需要一个自定义比较器
        //用于声明比较规则
        //就用到了Comparator这个接口,与Comparable区别
        //Comparable<T>是数组用于自定义排序时,让引用类型实现这个接口
        //并重写compareTo方法,以声明比较规则,是一种“入侵式的实现”
        List<NinePercent> ninePercents = new ArrayList<>();
        ninePercents.add(new NinePercent("蔡徐坤",20));
        ninePercents.add(new NinePercent("陈立农",11));
        ninePercents.add(new NinePercent("范丞丞",50));
        ninePercents.add(new NinePercent("黄明浩",114));
        //比较规则
        ninePercents.sort(new NicePercentComparator());
        //也可以使用匿名内部类
//      ninePercents.sort(new Comparator<NinePercent>() {
//          @Override
//          public int compare(NinePercent o1, NinePercent o2) {
//              return 0;
//          }
//      });
        //或者
//      Comparator<NinePercent> comparator = Comparator.comparing(NinePercent::getAge);
        for (NinePercent ninePercent : ninePercents) {
            System.out.println(ninePercent);
            //NinePercent{name='陈立农', age=11}
            //NinePercent{name='蔡徐坤', age=20}
            //NinePercent{name='范丞丞', age=50}
            //NinePercent{name='黄明浩', age=114}
        }
    }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值