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}
}
}
}
List接口中的特有方法
于 2024-04-11 18:23:11 首次发布