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

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

關(guān)于java的Stack類的問題。

關(guān)于java的Stack類的問題。

忽然笑 2018-07-25 11:19:26
代碼:如下 public static void main(String[] args) { Stack stack = new Stack<>(); stack.push(1); stack.push(2); System.out.println(stack.hashCode());// hashcode輸出994 for (Integer i : stack) { System.out.println(i); // 輸出1 2 } changeStack(stack); System.out.println(stack.hashCode());// hashcode輸出32 for (Integer i : stack) { System.out.println(i);//輸出1 }} public static void changeStack(Stack<Integer> stack) {     stack.pop(); }     問題:     為什么stack在changeStack()之后,居然連hashcode都變了呢?我知道stack的值會改變的,只是不知道為啥內(nèi)存地址也會變,前后的hashcode不應(yīng)該一樣么?我用Stringbuffer類,對他append之后,前后的hashcode一樣。為啥Stack會這樣呢?
查看完整描述

1 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經(jīng)驗 獲得超6個贊

朋友,首先糾正一個問題,hashcode 值 并不是Stack的地址的引用,也不是Stack中元素的地址引用。根據(jù)繼承關(guān)系分析,
Stack調(diào)用的AbstractList抽象類HashCode方法或者hashCode值。

https://img1.sycdn.imooc.com//5b6bfcd80001a95e04940248.jpghttps://img1.sycdn.imooc.com//5b6bfce70001664705020208.jpghttps://img1.sycdn.imooc.com//5b6bfd0100010dc208650323.jpg

從圖中可以看出,HashCode值得計算并不是地址引用,但是跟元素的HashCode有關(guān)聯(lián),即元素的HashCode值參與了計算。
我們Stack中存在的元素是Integer類型,而Integer 類型的HashCode值實際上就上Integer的value,即我們存儲的值,如圖:

https://img1.sycdn.imooc.com//5b6bfd190001208007810352.jpg

經(jīng)過這段介紹我想你應(yīng)該可以可以理解了吧~


查看完整回答
反對 回復(fù) 2018-08-09
  • 1 回答
  • 0 關(guān)注
  • 857 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號