导航:首页 > 版本升级 > 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相关的资料

热点内容
觉醒年代哪个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
vector去重java 浏览:572
qq群文件过期了怎么办 浏览:184
电子文件的特性 浏览:190
javatcp接收数据 浏览:968
编程什么最好做 浏览:872

友情链接