第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java 多個鍵直接指向相同的值

Java 多個鍵直接指向相同的值

慕碼人8056858 2021-09-03 10:11:46
有沒有辦法將多個鍵指向相同的值?IEHashMap<String, Float> mymap = new HashMap<>();mymap.put("hello",5f);mymap.put("bye",5f);~somehow point bye and hello to the same value~mymap.put("bye", mymap.get("bye") +5f)mymap.get("hello") == 10
查看完整描述

3 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

Java HashMap 存儲對對象的引用。如果您使用兩個不同的鍵存儲相同的對象,則鍵將指向相同的值。


但這不是你的問題。您的問題是您使用的是 Float 值,而 Float 是一種不可變的數據類型。一旦它被創(chuàng)建,你就不能改變它的價值。要實現您想要做的事情,您需要創(chuàng)建一個可變的 Float 或將浮點存儲在容器中并將該容器存儲在地圖中。最簡單的容器之一是單元素數組(盡管我只會在示例代碼中使用它,而不會在生產代碼中使用它,因為它容易出錯并且“自我無法記錄”)。


HashMap<String, Float[]> mymap = new HashMap<>();

Float[] val = new Float[] { 5f };

mymap.put("hello", val);

mymap.put("bye", val);

...

mymap.get("bye")[0] = mymap.get("bye")[0] + 5f;


mymap.get("hello")[0] == 10f


查看完整回答
反對 回復 2021-09-03
?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

為此,您需要一個可變對象作為 Value,例如:


static class FLoatHolder {

    private float f;


    public FLoatHolder(float f) {

        this.f = f;

    }


    public float getF() {

        return f;

    }


    public void setF(float f) {

        this.f = f;

    }

}



    Map<String, FLoatHolder> map = new HashMap<>();

    FLoatHolder fh = new FLoatHolder(5f);

    map.put("bye", fh);

    map.put("hello", fh);


    FLoatHolder holder = map.get("bye");

    holder.setF(holder.getF() + 0.5f);


    map.put("bye", holder);


    System.out.println(map.get("hello").getF());


查看完整回答
反對 回復 2021-09-03
?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

如果您只想讓兩個鍵指向同一個值,那完全沒問題。地圖不關心它們指向什么,只是沒有沖突的鍵。


如果您想將整數值相加,那么您的偽代碼將按您的意愿工作。


如果您想要類似指針的行為,其中更改鍵 A 的值會影響鍵 B 的值,那么您必須創(chuàng)建一個包裝對象并使用字段。


就像是:


class Pointer<T> {

    private T t;

    public Pointer(T t) {

        set(t);

    }

    public void set(T t) {

        this.t = t;

    }

    public T get() {

        return t;

    }

}

...

Map<String, Pointer> map = new HashMap<>();

Pointer<Integer> ptr = new Pointer<>(5);


map.put("A", ptr);

map.put("B", ptr);


System.out.println(map.get("A").get());

System.out.println(map.get("B").get());


ptr.set(25);


System.out.println(map.get("A").get());

System.out.println(map.get("B").get());

如果您想要其他東西,您可能需要詳細說明或考慮其他數據結構。


查看完整回答
反對 回復 2021-09-03
  • 3 回答
  • 0 關注
  • 334 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號