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.
Comments
Post a Comment