導航:首頁 > 版本升級 > java獲取文件hashcode

java獲取文件hashcode

發布時間:2023-08-15 19:26:39

A. java程序讀一個文本文件並用hashmap進行存儲,並對其中的信息按照姓名排序

給你發一個完整的吧,反正我電腦上有,
/**
* 存儲關聯的鍵值對
* @param key:鍵
* @param value:值
* @return
*/
public V put(K key, V value) {
//當鍵值為null時,調用putForNullKey(value)的方法存儲,
//在該方法中調用recordAccess(HashMap<K,V> m)的方法處理
if (key == null)
return putForNullKey(value);
//根據key的KeyCode,計算hashCode
int hash = hash(key.hashCode());
//調用indexFor方法,返回hash在對應table中的索引(Entry[] table)
int i = indexFor(hash, table.length);
//當i索引處的Entry不為null時,遍歷下一個元素
for (Entry<K,V> e = table[i]; e != null; e = e.next) {
Object k;
//如果遍歷到的hash值等於根據Key值計算出的hash值並且
//key值與需要放入的key值相等時,存放與key對應的value值
if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
//覆蓋oldValue的值
V oldValue = e.value;
e.value = value;
e.recordAccess(this);
return oldValue;
}
}

modCount++;
//當i索引處的Entry為null時,將指定的key、value、hash條目放入到指定的桶i中
//如果現有HashMap的大小大於容量*負載因子時,resize(2 * table.length);
addEntry(hash, key, value, i);
return null;
}

/實例化HashMap對象
HashMap<String,String> hashMap=new HashMap<String,String>();
//1、將Map介面變為Set介面
Set<Map.Entry<String,String>> set=hashMap.entrySet();
//2、實例化Iterator介面
Iterator it=set.iterator();
while(it.hasNext()){
//3、得到存儲在HashMap中的Entry對象
Map.Entry<String,String> me=(Entry<String, String>) it.next();
//4、通過Entry得到key和value
System.out.println("Key="+me.getKey()+"Value="+me.getValue());
}

HashMap<Student,String> map=new HashMap<Student,String>();
map.put(new Student("1608100201","Jony"), "CSU");
System.out.println(map.get(stu));
//實例化一個學生對象
Student stu=new Student("1608100201","Jony");
HashMap<Student,String> map=new HashMap<Student,String>();
map.put(stu, "CSU");
System.out.println(map.get(stu));
public class Student {
//學生的學號屬性
public static String ID;
//學生的姓名屬性
private String name;
/*
* 重載構造方法
*/
public Student(String ID,String name){
this.ID=ID;
this.name=name;
}

/**
* 覆寫equals()方法
*/
public boolean equals(Object obj) {
//判斷地址是否相等
if(this==obj){
return true;
}
//傳遞進來用於比較的對象不是本類的對象
if (!(obj instanceof Student))
return false;
//向下轉型
Student stu = (Student)obj;
//比較屬性內容是否相等
if (this.ID.equals(stu.ID)&&this.name.equals(stu.name)) {
return true;
}
return false;
}
/**
* 覆寫hashCode()方法
*/
public int hashCode() {
return this.ID.hashCode();
}


祝你好運了!~

B. java的jvm在執行java程序的時候,會給新建的對象分配一個唯一的標識,請問這個唯一標識怎麼獲取阿

可以使用對象的toString()方法,回返回一個字元串,字元串後半部分的哈希碼就是唯一的。

toString
public String toString()返回該對象的字元串表示。通常,toString 方法會返回一個「以文本方式表示」此對象的字元串。結果應是一個簡明但易於讀懂。建議所有子類都重寫此方法。
Object 類的 toString 方法返回一個字元串,該字元串由類名(對象是該類的一個實例)、at 標記符「@」和此對象哈希碼的無符號十六進製表示組成。換句話說,該方法返回一個字元串,它的值等於:

getClass().getName() + '@' + Integer.toHexString(hashCode())

返回:
該對象的字元串表示形式。

C. 請教java中的hashCode()方法 具體是什麼意思作用一般用在什麼地方

返回該對象的哈希碼值。支持此方法是為了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。
hashCode 的常規協定是:

在 Java 應用程序執行期間,在對同一對象多次調用 hashCode 方法時,必須一致地返回相同的整數,前提是將對象進行 equals 比較時所用的信息沒有被修改。從某一應用程序的一次執行到同一應用程序的另一次執行,該整數無需保持一致。
如果根據 equals(Object) 方法,兩個對象是相等的,那麼對這兩個對象中的每個對象調用 hashCode 方法都必須生成相同的整數結果。
如果根據 equals(java.lang.Object) 方法,兩個對象不相等,那麼對這兩個對象中的任一對象上調用 hashCode 方法不 要求一定生成不同的整數結果。但是,程序員應該意識到,為不相等的對象生成不同整數結果可以提高哈希表的性能。
實際上,由 Object 類定義的 hashCode 方法確實會針對不同的對象返回不同的整數。(這一般是通過將該對象的內部地址轉換成一個整數來實現的,但是 JavaTM 編程語言不需要這種實現技巧。)

D. Java語言中Object對象的hashCode取值的底層演算法是怎樣實現的

在JDK中看到

public native int hashCode();

這是一個本地方法,需要找源代碼才能找到

然後我在Android SDK中的JDK Object類找到了這個,應該是你想要的了

publicinthashCode(){
intlockWord=shadow$_monitor_;
finalintlockWordStateMask=0xC0000000;//Top2bits.
finalintlockWordStateHash=0x80000000;//Top2bitsarevalue2(kStateHash).
finalintlockWordHashMask=0x0FFFFFFF;//Low28bits.
if((lockWord&lockWordStateMask)==lockWordStateHash){
returnlockWord&lockWordHashMask;
}
returnSystem.identityHashCode(this);
}

但最後的System.identityHashCode(this)方法還是一個本地方法,還得去找源碼,你折騰的話自己去搜索吧。

下面是String類的hashCode()方法,可以看下

publicinthashCode(){
inth=hash;
if(h==0&&value.length>0){
charval[]=value;

for(inti=0;i<value.length;i++){
h=31*h+val[i];
}
hash=h;
}
returnh;
}
閱讀全文

與java獲取文件hashcode相關的資料

熱點內容
win10系統打開java 瀏覽:479
全日制編程什麼意思 瀏覽:447
筆記本創建區域網怎麼傳文件 瀏覽:871
怎樣查看id密碼 瀏覽:647
贛州極客晨星少兒編程怎麼樣 瀏覽:690
覺醒年代哪個app可以免費觀看 瀏覽:830
如何關閉win10觸摸屏幕 瀏覽:761
蘋果142不能傳文件 瀏覽:128
如何看歷史底部數據 瀏覽:230
怎麼在電腦上下軟體或安裝app 瀏覽:798
qq頭像電影截圖情侶 瀏覽:87
安卓的網路位置設置在哪 瀏覽:973
編程俠官網如何登錄 瀏覽:484
借貸王app怎麼樣 瀏覽:552
qq黑鑽手機怎麼開通 瀏覽:465
dnf85版本爆ss視頻 瀏覽:514
gitlog前一個版本 瀏覽:718
蘋果6手機屏幕周邊多出一圈黑色 瀏覽:131
phpword插件 瀏覽:264
win10重置並清理驅動器 瀏覽:893

友情鏈接