I've a recursive list of objects with unknown depth and I'm trying to sort all objects within the lists by a string property name.
exampleData.json
[
{
"name": "B",
"items": [
{
"name": "Bb",
"items": []
},
{
"name": "Bc",
"items": []
},
{
"name": "Ba",
"items": []
}
]
},
{
"name": "A",
"items": [
{
"name": "Ab",
"items": []
},
{
"name": "Aa",
"items": []
}
]
}
]
sortedData.json
[
{
"name": "A",
"items": [
{
"name": "Aa",
"items": []
},
{
"name": "Ab",
"items": []
},
{
"name": "Ac",
"items": []
}
]
},
{
"name": "B",
"items": [
{
"name": "Ba",
"items": []
},
{
"name": "Bb",
"items": []
}
]
}
]
Below is my current approach in Java. While it seems to work for small amounts of data, I'm uncertain of how professional it is since I've no experience with recursion and its performance.
private void sortRecursivelyByName(List<Item> items) {
if(items== null || items.isEmpty()) {
return;
}
items.sort((a,b) -> {
this.sortRecursivelyByName(a.items);
this.sortRecursivelyByName(b.items);
return a.getName().compareTo(b.getName());
});
}