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();

} 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM