Hi You can use Comparable
interface and TreeSet
to solve your issue as bellow
Create your Data Structure class as bellow
public class YourDataSructure implements Comparable<YourDataSructure> {
public float key;
public String data;
public YourDataSructure(float key,String data) {
this.key = key;
this.data = data;
}
@Override
public int compareTo(YourDataSructure o) {
if(key > o.key)
{
return 1;
}else if(key <= o.key)
{
return -1;
}
return 0;
}
}
And use this code to add the data
TreeSet<YourDataSructure> treeset = new TreeSet<>();
treeset.add(new YourDataSructure(34,"test 1"));
treeset.add(new YourDataSructure(22.11f,"test 2"));
treeset.add(new YourDataSructure(34.12f,"test 3"));
treeset.add(new YourDataSructure(11.12f,"test 4"));
treeset.add(new YourDataSructure(11.1f,"test 5"));
treeset.add(new YourDataSructure(66.32f,"test 6"));
treeset.add(new YourDataSructure(69.55f,"test 7"));
treeset.add(new YourDataSructure(34.43f,"test 8"));
treeset.add(new YourDataSructure(11f,"test 9"));
treeset.add(new YourDataSructure(11f,"test 10"));
treeset.forEach(new Consumer<YourDataSructure>() {
@Override
public void accept(YourDataSructure t) {
System.out.println(t.key + " " + t.data);
}
});
Works fine for me
Here is the output sorted w.r.t. key value and duplicate keys also allowed.
11.0 test 10
11.0 test 9
11.1 test 5
11.12 test 4
22.11 test 2
34.0 test 1
34.12 test 3
34.43 test 8
66.32 test 6
69.55 test 7