Sort and Remove Duplicates in Dart

Sort and Remove Duplicates in Dart

How to Sort and Remove Duplicates from an Array in Dart

Question:

How can I manually sort an array and remove duplicates when the array contains different data types (e.g., integers, strings, booleans) in Dart?

Answer:

Below is a manual implementation in Dart to handle this:

Solution 1: Manual Deduplication and Sorting

void main() {
  // Step 1: Input array with mixed data types and duplicates
  List array = [42, "hello", 3.14, "world", 42, "hello", true, false, 3.14];

  // Step 2: Remove duplicates manually
  List uniqueArray = [];
  for (var element in array) {
    if (!uniqueArray.contains(element)) {
      uniqueArray.add(element);
    }
  }

  // Step 3: Sort the array manually
  for (int i = 0; i < uniqueArray.length - 1; i++) {
    for (int j = i + 1; j < uniqueArray.length; j++) {
      // Compare elements as strings to handle mixed data types
      if (uniqueArray[i].toString().compareTo(uniqueArray[j].toString()) > 0) {
        // Swap elements
        var temp = uniqueArray[i];
        uniqueArray[i] = uniqueArray[j];
        uniqueArray[j] = temp;
      }
    }
  }

  // Step 4: Output the result
  print(uniqueArray);
}

Solution 2: Using Built-in Methods

If you prefer to use Dart's built-in methods, here's another solution:

void main() {
  // Input array with mixed data types and duplicates
  List array = [42, "hello", 3.14, "world", 42, "hello", true, false, 3.14];

  // Remove duplicates by converting to a Set, then back to a List
  List uniqueArray = array.toSet().toList();

  // Sort the list using a custom comparator
  uniqueArray.sort((a, b) {
    // Convert to strings to enable comparison across data types
    return a.toString().compareTo(b.toString());
  });

  // Print the result
  print(uniqueArray);
}

Comparison of Solutions:

  • Solution 1: Demonstrates manual logic for learning and customization.
  • Solution 2: Utilizes Dart's built-in methods for simplicity and efficiency.

Output for Both Solutions:

[3.14, 42, false, hello, true, world]

Both solutions achieve the same result, but Solution 1 provides more control for educational purposes.

Written by Ayush Gupta, a passionate Flutter developer with expertise in Dart and UI/UX design.

Comments

Popular Posts