package cn.test.two; import java.util.ArrayList; import java.util.Comparator; import java.util.List; /** * 前面介绍Collection接口的常用方法,接下来介绍Collection的子接口List的抽象方法,这些方法是List类型集合共有的方法。 * java.util.List extends Collection * 已经在Collection接口中介绍过的方法不在赘述 * * void add(int index, E elem) 可以用这个方法,说明集合必须是有序的 * E get(int index) * int indexOf(Object o) 返回o第一次在集合中出现的下标,未找到则返回-1 * int lastIndexOf(object o) 最后一次出现的下标 -1 * E set(int index, E elem) 替换指定位置的元素,返回替换前的元素 * default void sort(Comparator<? super E> c) 排序, 默认升序 */ public class OperationOfList { public static void main(String[] args) { // 创建一个人的集合, 使用ArrayList实现类 List<Person> list = new ArrayList<>(); list.add(new Person("李白", 18)); list.add(new Person("李昱", 22)); list.add(new Person("赵云", 20)); list.add(new Person("王勃", 19)); for (Person person : list) { System.out.println(person); } /** * Person{name='李白', age=18} * Person{name='李昱', age=22} * Person{name='赵云', age=20} * Person{name='王勃', age=19} */ // void add(int index, E elem) 可以用这个方法,说明集合必须是有序的 list.add(0, new Person("Tom", 7)); for (Person person : list) { System.out.println(person); } /** * Person{name='Tom', age=7} * Person{name='李白', age=18} * Person{name='李昱', age=22} * Person{name='赵云', age=20} * Person{name='王勃', age=19} */ // int indexOf(Object o) 返回o第一次在集合中出现的下标,未找到则返回-1 Person p = new Person("李白", 18); System.out.println(list.indexOf(p)); // 返回-1, 因为没有重写equals方法,可以equals方法设定name和age相同就相同 // 现在想要对集合根据年龄进行排序,然后输出 list.sort(new Comparator<Person>() { @Override public int compare(Person o1, Person o2) { return o1.getAge() - o2.getAge(); } }); // 查看是否是根据年龄进行排序的 for (Person person : list) { System.out.println(person); } /** * Person{name='Tom', age=7} * Person{name='李白', age=18} * Person{name='王勃', age=19} * Person{name='赵云', age=20} * Person{name='李昱', age=22} */ /** * 或者使用lambda, 根据年龄 降序 排序 */ list.sort((x, y) -> y.getAge() - x.getAge() ); for (Person person : list) { System.out.println(person); } /** * Person{name='李昱', age=22} * Person{name='赵云', age=20} * Person{name='王勃', age=19} * Person{name='李白', age=18} * Person{name='Tom', age=7} */ } } class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
Link接口方法
最新推荐文章于 2021-11-11 18:59:35 发布