Java—集合框架 List的 indexOf()、lastIndexOf()

  • 集合中某个元素出现的位置—List的indexOf(),lastIndexOf()

  indexOf(Object obj)方法的实现机制是从序列(List)的第0个元素开始依次循环,并且调用每个元素的equals()方法和参数对象进行比较,如果某一个元素的equals()方法返回值为true,那么就把当前元素的索引位置作为结果返回。假如序列中有多个重复的元素,只返回这个重复的元素第一次出现时所在的索引位置的值。

  lastIndexOf(Object obj)方法,与indexOf()方法相反,它返回的是某个元素最后一次出现的索引位置的值,也就是它会从序列的队尾向队头进行遍历。

  以上两个方法的参数对象如果在序列中都没有出现的话,那么这两个方法都会返回-1。

  SetTest类部分示例代码:

package com.test.collection;

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

public class SetTest {
    public List<Course> coursesToSelect;
    private Scanner console;
    public static Student student;
    public SetTest() {
        coursesToSelect = new ArrayList<Course>();
        console = new Scanner(System.in);
    }
    public void testAdd() {
        Course c1 = new Course("1", "数据结构");//创建课程对象的实例
        Course c2 = new Course("2", "C语言");
        Course c3 = new Course("3", "离散数学");
        Course c4 = new Course("4", "汇编语言");
        Course c5 = new Course("5", "数据结构");
        Course[] course = {c1, c2, c3, c4, c5};
        coursesToSelect.addAll(Arrays.asList(course));
    }
    public void testListContains() {
        System.out.println("请输入课程名称:");
        String courseName = console.next();
        Course c3 = new Course();
        c3.name = courseName;
        System.out.println("课程【" + c3.name + "】是否在备选课程中:" + coursesToSelect.contains(c3));
        if (coursesToSelect.contains(c3)) {
            System.out.println("课程:" + c3.name + "第一次出现的索引位置为:" + coursesToSelect.indexOf(c3));
            System.out.println("课程:" + c3.name + "最后一次出现的索引位置为:" + coursesToSelect.lastIndexOf(c3));
        }
    }
    
    public static void main(String[] args) {
        SetTest st = new SetTest();
        st.testAdd();
        st.testListContains();

} 
原文地址:https://www.cnblogs.com/tianxintian22/p/6735959.html