簡體   English   中英

從數組 C# 中刪除第二次出現的值

[英]Remove second occurrence of value from array C#

不是像我的代碼當前那樣刪除重復值的第一次出現,而是如何讓它刪除第二次出現?

namespace deletenumber
{
    class Program
    {    
        public static void Main(String[] args)
        {

            Random r = new Random();

            int[] a = new int[10];

            for (int i = 0; i < 10; i++)
                a[i] = r.Next(1, 100);

            for (int i = 0; i < 10; i++)
                Console.WriteLine(" a [" + i + "] = " + a[i]);

            Console.WriteLine();
            Console.ReadLine();

            Console.WriteLine("What number do you want to delete?");
            int item = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine();

            int index = Array.IndexOf(a, item);
            a = a.Where((b, c) => c != index).ToArray();

            Console.WriteLine(String.Join(", ", a));
            Console.ReadLine();
        }
    }
}

您可以將數組轉換為 List,然后在將其轉換回數組之前刪除索引:

var list = new List<int>(a);
list.RemoveAt(index);
a = list.ToArray();

我不確定為什么您可能只想刪除第二次出現,因為無論刪除哪個重復項,都應該刪除,對嗎?

無論如何,有幾種方法可以實現您想要的。 我不會在這里直接寫解決方案,但會提出您可以使用的方法以實現您想要的:

  1. Array.LastIndexOf
  2. 再次使用相同的IndexOf方法查找第二個匹配項,從上一次匹配開始搜索( myArray.IndexOf("string", last_indexof_index);

一般來說,如果你想擁有一個獨特元素的集合,可以考慮使用HashSet<T> (官方文檔在這里)。

您還可以將現有集合轉換為HashSet<int>

int[] a = new int[10];
var set = new HashSet<int>(a);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM