diff --git a/src/com/trinity/stooges/KNN.java b/src/com/trinity/stooges/KNN.java index a0c3e42..fb57a44 100644 --- a/src/com/trinity/stooges/KNN.java +++ b/src/com/trinity/stooges/KNN.java @@ -7,20 +7,21 @@ class KNN { public ArrayList closestNeighbour(SongEntity seed_song, SongEntity[] songs, int number) { - HashMap map = new HashMap(); + HashMap map = new HashMap(); ValueComparator bvc = new ValueComparator(map); - TreeMap sorted_map = new TreeMap(bvc); + TreeMap sorted_map = new TreeMap(bvc); ArrayList distances = new ArrayList(); for (int i = 0; i < songs.length; i++) { - map.put(songs[i].get_id(), (double) computeDistance(seed_song, songs[i])); + map.put(songs[i].get_id(), (float) computeDistance(seed_song, songs[i])); } sorted_map.putAll(map); - sorted_map.descendingMap(); +// sorted_map.descendingMap(); int count = 0; for (String key :sorted_map.keySet()) { - if(count != number) { + if(count >= (songs.length - number)) { distances.add(key); } + count++; } return distances; } diff --git a/src/com/trinity/stooges/ValueComparator.java b/src/com/trinity/stooges/ValueComparator.java index faa933e..b5b2744 100644 --- a/src/com/trinity/stooges/ValueComparator.java +++ b/src/com/trinity/stooges/ValueComparator.java @@ -5,16 +5,16 @@ public class ValueComparator implements Comparator { - Map base; - public ValueComparator(Map base) { + Map base; + public ValueComparator(Map base) { this.base = base; } public int compare(Object a, Object b) { - if((Double)base.get(a) < (Double)base.get(b)) { + if((Float)base.get(a) < (Float)base.get(b)) { return 1; } - else if((Double)base.get(a) == (Double)base.get(b)) { + else if((Float)base.get(a) == (Float)base.get(b)) { return 0; } else {