Lolo
Lolo

Reputation: 4159

How to preserve the values ordering of a sorted map?

I have a sorted map and would like to retrieve the values in the order of their corresponding keys. I.e. if my sorted map has (1,6), (2,4), (3,1), I want to retrieve [6,4,1].

Is there something faster than iterating over the sorted map like so?

SortedMap<Double, Double> sortedMap = new TreeMap<Double, Double>(sortedMap.size());
List<Double> values = new ArrayList<Double>();
for (Entry<Double, Double> entry : sortedMap.entrySet()) {
    values.add(entry.getValue());
}

I don't think simply doing:

values = new ArrayList<Double>(sortedMap.values())

would work since sortedMap.values() returns a Collection with no guarantees on the order but iterating over the map doesn't strike me as efficient.

Upvotes: 0

Views: 73

Answers (2)

makasprzak
makasprzak

Reputation: 5220

sortedMap.values() returns a Collection with no guarantees on the order

According to docs for SortedMap the order is guaranteed, see:

http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html#values()

Upvotes: 2

Kakarot
Kakarot

Reputation: 4252

Why do you think iterating over a sorted map is slow? In order to retrieve all the values you would have to eventually iterate through the entire Map. So the time complexity will always be O(n).

Upvotes: 0

Related Questions