Open In App

C# | Remove from the specified index of a SortedList

Last Updated : 11 Oct, 2018
Improve
Improve
Like Article
Like
Save
Share
Report

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:




// 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);
    }
}


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:




// 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);
    }
}


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:



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads