C# | Remove from the specified index of a SortedList

SortedList class is a collection of (key, value) pairs which are sorted according to keys. Those pairs can be accessible by key and as well as by index(zero-based indexing). This comes under System.Collections namespace. SortedList.RemoveAt(Int32) method is used to remove the element at the specified index of a SortedList object.

Properties:

  • A SortedList element can be accessed by its key or by its index.
  • A SortedList object internally maintains two arrays to store the elements of the list, i.e, one array for the keys and another array for the associated values.
  • A key cannot be null, but a value can be.
  • The capacity of a SortedList object is the number of elements the SortedList can hold.
  • A SortedList does not allow duplicate keys.
  • Operations on a SortedList object tend to be slower than operations on a Hashtable object because of the sorting.
  • Elements in this collection can be accessed using an integer index. Indexes in this collection are zero-based.

Syntax:

public virtual void RemoveAt (int index);

Here, index is the zero-based index of the element to remove.

Exceptions:



  • NotSupportedException : If the SortedList object is read-only or the SortedList has a fixed size.
  • ArgumentOutOfRangeException : If the index is outside the range of valid indexes for the SortedList object.

Below given are some examples to understand the implementation in a better way:

Example 1:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to remove the element at
// the specified index of a SortedList
using System;
using System.Collections;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating an SortedList
        SortedList mySortedList = new SortedList();
  
        // Adding elements to SortedList
        mySortedList.Add("DS", "Data Structures");
        mySortedList.Add("EE", "Electrical Engineering");
        mySortedList.Add("CS", "Computer Science");
        mySortedList.Add("ME", "Mechanical Engineering");
        mySortedList.Add("CE", "Civil Engineering");
  
        // Displaying elements in SortedList
        foreach(string mykey in mySortedList.Keys)
            Console.WriteLine("Key = " + mykey);
  
        foreach(string myvalue in mySortedList.Values)
            Console.WriteLine("Key = " + myvalue);
  
        // Removing element at index 4
        Console.WriteLine("Removing element at index 4");
  
        mySortedList.RemoveAt(4);
  
        // Displaying elements in SortedList
        foreach(string mykey in mySortedList.Keys)
            Console.WriteLine("Key = " + mykey);
  
        foreach(string myvalue in mySortedList.Values)
            Console.WriteLine("Key = " + myvalue);
    }
}

chevron_right


Output:

Key = CE
Key = CS
Key = DS
Key = EE
Key = ME
Key = Civil Engineering
Key = Computer Science
Key = Data Structures
Key = Electrical Engineering
Key = Mechanical Engineering
Removing element at index 4
Key = CE
Key = CS
Key = DS
Key = EE
Key = Civil Engineering
Key = Computer Science
Key = Data Structures
Key = Electrical Engineering

Example 2:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to remove the element at
// the specified index of a SortedList
using System;
using System.Collections;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating an SortedList
        SortedList mySortedList = new SortedList();
  
        // Adding elements to SortedList
        mySortedList.Add("DS", "Data Structures");
        mySortedList.Add("EE", "Electrical Engineering");
        mySortedList.Add("CS", "Computer Science");
        mySortedList.Add("ME", "Mechanical Engineering");
        mySortedList.Add("CE", "Civil Engineering");
  
        // Displaying elements in SortedList
        foreach(string mykey in mySortedList.Keys)
            Console.WriteLine("Key = " + mykey);
  
        foreach(string myvalue in mySortedList.Values)
            Console.WriteLine("Key = " + myvalue);
  
        // Removing element at index 8
        Console.WriteLine("Removing element at index 8");
  
        // It should raise ArgumentOutOfRangeException
        // As index is outside the range of valid
        // indexes for the SortedList object.
        mySortedList.RemoveAt(8);
  
        // Displaying elements in SortedList
        foreach(string mykey in mySortedList.Keys)
            Console.WriteLine("Key = " + mykey);
  
        foreach(string myvalue in mySortedList.Values)
            Console.WriteLine("Key = " + myvalue);
    }
}

chevron_right


Error:

Unhandled Exception:
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

Note:

  • The index sequence is based on the sort sequence. When an element is added, it is inserted into SortedList in the correct sort order, and the indexing adjusts accordingly. When an element is removed, the indexing also adjusts accordingly. Therefore, the index of a specific key/value pair might change as elements are added or removed from the SortedList object.
  • This method is an O(n) operation, where n is Count.

Reference:



My Personal Notes arrow_drop_up

In love with a semicolon because sometimes i miss it so badly)

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.