Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Tìm chỉ số (index) của phần tử trong List C#


Giới thiệu

Phương thức IndexOf(T item) của List<T> trả về chỉ số 0-based của lần xuất hiện đầu tiên của item. Trả về -1 nếu không tìm thấy. Sử dụng EqualityComparer<T>.Default để so sánh.

Ví dụ cơ bản

List val = new List { 35, 55, 68 };
int index = val.IndexOf(68); // 2

Ví dụ hoàn chỉnh

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        List val = new List { 35, 55, 68 };
        int index = val.IndexOf(68);
        Console.WriteLine(index); // 2
    }
}

Kết quả

2

Các nạp chồng IndexOf

  • IndexOf(T item) - tìm từ đầu.
  • IndexOf(T item, int index) - tìm từ index cho đến cuối.
  • IndexOf(T item, int index, int count) - tìm trong đoạn [index, index+count).

LastIndexOf

Tìm lần xuất hiện cuối cùng:

List list = new List { 1, 2, 3, 2, 4 };
int first = list.IndexOf(2);    // 1
int last = list.LastIndexOf(2); // 3

Lưu ý

  • Với kiểu tham chiếu, so sánh tham chiếu (reference equality) trừ khi class override Equals.
  • Với struct/primitive, so sánh giá trị.
  • Phức tạp O(n) - duyệt tuyến tính.
  • Nếu cần tra cứu nhanh O(1), cân nhắc Dictionary<T, int> lưu index.

Ví dụ tìm tất cả vị trí

List list = new List { 1, 2, 3, 2, 4 };
List indices = new List();
int index = -1;
while ((index = list.IndexOf(2, index + 1)) != -1)
{
    indices.Add(index);
}
// indices = [1, 3]