- 集合中某個元素出現的位置—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(); }