Видалити перший елемент із SortedSet c #

У мене є SortedSet спеціальних об'єктів, і я хочу видалити перший елемент, який я беру за допомогою функції First() з колекції SortedSet . Проблема в тому, що вона не працює, і я не знаю чому.

Будь-яка допомога?

[Редагувати] Мій код

URL u = Queue.First (); Queue.Remove (u);

де URL-адреса - це спеціальний клас

2
@spender - сортовані набори мають замовлення.
додано Автор Lee, джерело
Що ви маєте на увазі, це не спрацьовує? Ви знаєте, що метод розширення First отримує посилання, але не видаляє елементи з переліку, чи не так?
додано Автор Renan, джерело
Як ви намагаєтесь його видалити? Опублікуйте цей код, будь ласка.
додано Автор Yuck, джерело
Проблема в моєму класі. В основному, коли я реалізував IComparable я забув рівність, і тому видалення не вийшло для мене ... в усякому разі, на майбутнє я краще поясню свої питання.
додано Автор Bogdan Fichitiu, джерело
Проблема ОП полягає в тому, щоб реалізувати свій спеціальний клас. Можливо, інформація тут така, що йому потрібна (як і я): stackoverflow.com/questions/24220369/…
додано Автор silvalli, джерело
Проблема ОП полягає в тому, щоб реалізувати свій спеціальний клас. Можливо, інформація тут така, що йому потрібна (як і я): stackoverflow.com/questions/24220369/…
додано Автор silvalli, джерело

8 Відповіді

First() method works properly. But you'll remove the First() sorted item.

SortedSet set = new SortedSet();
set.Add("b");
set.Add("c");
set.Add("a");
Console.WriteLine(set.First());//Display 'A'
set.Remove(set.First());//Remove 'A'
Console.WriteLine(set.First());//Display 'B'
8
додано
Мінус буде значно швидшим - обидва роблять дерево дерева logN, але спочатку виділяє проміжний переписувач.
додано Автор Warty, джерело
Замість По-перше, ви можете використовувати Min.
додано Автор Orace, джерело

Це досить прямо вперед, наприклад

SortedSet set = new SortedSet();
set.Add("Hi");
var f = set.First();
set.Remove(f);
6
додано
@BogdanFichitiu застосовується той же принцип. Якщо ви публікуєте свій код і пояснюєте, як він "не працює", нам простіше визначити проблему.
додано Автор ThatBlairGuy, джерело
мій код дійсно такий же, як тільки я отримав інший клас, а не рядок.
додано Автор Bogdan Fichitiu, джерело

Це досить прямо вперед, наприклад

SortedSet set = new SortedSet();
set.Add("Hi");
var f = set.First();
set.Remove(f);
6
додано
@BogdanFichitiu застосовується той же принцип. Якщо ви публікуєте свій код і пояснюєте, як він "не працює", нам простіше визначити проблему.
додано Автор ThatBlairGuy, джерело
мій код дійсно такий же, як тільки я отримав інший клас, а не рядок.
додано Автор Bogdan Fichitiu, джерело

You can use SortedSet.Remove Method і Enumerable.First Method

Removes a specified item from the SortedSet.

і

Повертає перший елемент послідовності.

SortedSet s = new SortedSet();
...
s.Remove(s.First());
1
додано
1
додано

Перший() нічого не видаляє. Ви не висаджуєте його зі столу. Якщо ви хочете видалити його після того, як ви його візьмете.

 var coll =....your sorted set
 var p = coll.First();
 coll.remove(p)
1
додано

Робочий приклад із застосуванням консолі

    static void Main(string[] args)
    {
        SortedSet set = new SortedSet();
        set.Add("One");
        set.Add("Two");
        set.Add("Three");

        string first = set.First();
        set.Remove(first);

        foreach (var s in set)
        {
            Console.WriteLine(s);                
        }
        Console.ReadLine();
    }
0
додано

Ви не можете видалити елемент, викликаючи First (). Спочатку() метод розширення просто повертає посилання на перший елемент. Щоб видалити елемент, потрібно викликати Видалити .

0
додано
Джордж Джонстон вже відповідав на те, що ви згадали
додано Автор Pankaj Agarwal, джерело
var chat = new Chat();
var chat = new Chat();
642 учасників

Обсуждение вопросов по C# / .NET / .NET Core / .NET Standard / Azure Сообщества-организаторы: — @itkpi — @dncuug