मैं बतख वस्तुओं का संग्रह मिल गया है और मैं करने के लिए तरह उन्हें एकाधिक कुंजी का उपयोग कर चाहते हैं।छंटाई जावा कई कुंजियों का उपयोग वस्तुओं
class Duck {
DuckAge age; //implements Comparable
DuckWeight weight; //implements Comparable
String name;
}
List<Duck> ducks = Pond.getDucks();
उदाहरण के लिए। मैं अपनी उम्र द्वारा गौणतः उन्हें उनके वजन द्वारा मुख्य रूप से, और क्रमबद्ध करना चाहते हैं। दो बतख ठीक उसी वजन और ठीक उसी उम्र है, तो चलो एक तृतीयक कुंजी के रूप में उनके नाम का उपयोग उन्हें अलग करते हैं। मैं ऐसा कुछ कर सकता हूं:
Collections.sort(ducks, new Comparator<Duck>(){
@Override
public int compare(Duck d1, Duck d2){
int weightCmp = d1.weight.compareTo(d2.weight);
if (weightCmp != 0) {
return weightCmp;
}
int ageCmp = d1.age.compareTo(d2.age);
if (ageCmp != 0) {
return ageCmp;
}
return d1.name.compareTo(d2.name);
}
});
वैसे मैं इसे अक्सर करता हूं, लेकिन यह समाधान सही गंध नहीं करता है। यह अच्छी तरह से स्केल नहीं करता है, और गड़बड़ करना आसान है। निश्चित रूप से एक से अधिक कुंजियों का उपयोग बतख छँटाई का एक बेहतर तरीका होना चाहिए! क्या कोई बेहतर समाधान के बारे में जानता है?
संपादित अनावश्यक else
शाखाओं
यह बहुत बुरा नहीं लग रहा है, तो आप 'अगर' वापस लौटने के बाद से 'else' दोनों को हटाकर इंडेंटेशन के एक स्तर को हटा सकते हैं, इसलिए इसकी आवश्यकता नहीं है। – stivlo
+1 अपने बतख को क्रम में प्राप्त करने के लिए – Rich
क्या कोर जावा में कोई सुरुचिपूर्ण समाधान नहीं है? – Sid