簡體   English   中英

遍歷哈希映射鍵並進行比較

[英]Iterating through hashmap keys and comparing

我想遍歷哈希圖的每個鍵,並將其與它下面的每個鍵進行比較(因此,我不會兩次比較鍵)。 我想看看哪些坡度相互垂直。 如果斜率的乘積為-1,則它們為,我將使用這些鍵對arraylist進行處理。

到目前為止,我已經使用以下方法構建了地圖:

Map<Double, List<Double>> map = new HashMap<Double, List<Double>>();

for(int i = 0; i < n; i++) {
    for(int j = i + 1; j < n; j++) {
        if(line[4][i] == line[4][j]) {
            double distance = 7.0;   //distance();

            List<Double> array = (map.containsKey(line[4][i])) ? map.get(line[4][i]):new ArrayList<Double>();
            array.add(distance);
            map.put(line[4][i], array);

            // System.out.println(Arrays.asList(array));
            // System.out.println(distance);
        }
    }
}

並嘗試使用以下方法遍歷地圖:

Iterator<Entry<Double, List<Double>>> i = map.entrySet().iterator();
while(i.hasNext()) {
    Entry next = i.next();
    i.remove();
    for(Entry e : map.entrySet()) {
        System.out.println(next + " " + e);

        //ERROR: The method parseDouble(String) in the type Double is not applicable for the arguments (Object)
        if((Double.parseDouble(next.getKey()) * (Double.parseDouble(e.getKey()))) == -1) 
            System.out.println("pair"); //do something 
    }
}

但是我無法將一個對象解析為一個double,而且我對如何繼續不知所措。 任何幫助表示贊賞

針對您的問題,在下一個條目中使用類型限定符:

Map.Entry<Double, List<Double>> next = i.next();

這里也是:

Map.Entry<Double, List<Double>> e : map.entrySet()

那么編譯器將知道getKey()將返回Doubles,並允許將它們彼此相乘。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM