标签: hashcode

如果我的网站导航依赖于网址中的哈希标记,我可以使用ShareThis/AddThis按钮吗?

我想在我的网站上嵌入ShareThis/AddThis按钮,但网站的导航依赖于网址中的哈希标记.每个页面都分配有唯一的哈希值(即http://domain.com/index.php#products).无法更改导航/页面设计.这些服务是否会保留哈希值(在页面上嵌入JS)?如果他们不这样做,有哪些替代解决方案?

hashcode sharethis

1
推荐指数
1
解决办法
1754
查看次数

我应该如何使用google guava hashCode()调用super.hashcode

public abstract class HolidayPackageVariant {
private HolidayPackage holidayPackage;
private String typeHolidayPackage;

@Override
    public int hashCode() {
        return Objects.hashCode(getTypeHolidayPackage(), getHolidayPackage());
    }
}

public final class FlightHolidayPackageVariant extends HolidayPackageVariant{
private Destination originCity;

@Override
    public int hashCode() {
        // need to add super.hashCode() here somehow ?
        return Objects.hashCode(getOriginCity() );
    }
}
Run Code Online (Sandbox Code Playgroud)

Google guava hashode():Objects.hashCode适用于成员对象.如何在derived :: hashCode()中指定超类hashCode()?我可以直接在派生类hashCode()函数中使用super.members,但是如果super.hashCode()以任何方式更改,那么这将不会反映在derived:hashCode(...)中.

java hash hashcode guava

1
推荐指数
2
解决办法
1634
查看次数

在HashMap中找不到自定义对象?

嗨,我正在尝试学习hashcode()和equals()方法的目的.我尝试了以下程序.

import java.util.HashMap;

public class LearnHascode {

public String name;
public int age;
LearnHascode(String na)
{
    name = na;
}
public int hashCode()
{
    return name.hashCode();
}
public boolean equals(LearnHascode obj)
{
    return this.name.equals(obj.name);
}
public static void main(String[] args)
{
    HashMap h = new HashMap();
    LearnHascode ob1 = new LearnHascode("Prabha");
    LearnHascode ob2 = new LearnHascode("Prabha");

    h.put(ob1, v1);
    h.put(ob2, v2);


    System.out.println(h);
    System.(h.out.printlncontainsKey(new LearnHascode("Prabha")));

}

}
Run Code Online (Sandbox Code Playgroud)

输出:

{hash.LearnHascode@8ef7bdfc=Two, hash.LearnHascode@8ef7bdfc=one}
false
Run Code Online (Sandbox Code Playgroud)

我有两个疑问:

1)我认为HashMap将包含一个条目,因为两个对象(ob1和ob2)的hascode是相同的.任何人都可以解释为什么HashMap中有两个条目?

2)为什么System.(h.out.printlncontainsKey(new LearnHascode("Prabha"))); 返回假?

java hashcode

1
推荐指数
1
解决办法
532
查看次数

检索地图中的对象

我正在尝试在更改其实例变量时将对象检索为Map中的键.就我而言,当我在Map结构中搜索一个关键对象时,它应该在hashCode方法返回与最初相同的值时出现.但是,基于以下代码,我无法通过方法get()检索变量权重的值来检索对象:

public class Car  implements Comparable<Car> {

 int weight;
 String name;

 public Car(int w, String n) {
    weight=w;
    name=n;
 }

public boolean equals(Object o){
    if(o instanceof Car){
        Car d = (Car)o;
        return ((d.name.equals(name)) && (d.weight==weight));
    }
    return false;

}

public int hashCode(){
    return weight/2 + 17;
}

public String toString(){
    return "I am " +name+ " with weight: "+weight;
}


public int compareTo(Car d){
    if(this.weight>d.weight)
        return 1;
    else if(this.weight<d.weight)
        return -1;
    else
        return this.name.compareTo(d.name);
}

}


public static void main(String[] …
Run Code Online (Sandbox Code Playgroud)

java map hashcode

1
推荐指数
1
解决办法
102
查看次数

HashSet添加重复的对象

我有一个HashSet,它在Graph中存储了一些边.每个Edge都有两个节点.

在图表未定向的情况下,添加副本应该失败:

Edge a = new Edge(new Node("aa"), new Node("bb"));
Edge duplicate = new Edge(new Node("aa"), new Node("bb"));
Run Code Online (Sandbox Code Playgroud)

但是在下面的例子中它起作用:

System.out.println(a.equals(duplicate));

Set<Edge> sete = new HashSet<Edge>();
System.out.println(sete.contains(a));
System.out.println(sete.add(a));
System.out.println(sete.contains(duplicate));
System.out.println(sete.add(duplicate));

Output:
true

false
true
false
true
Run Code Online (Sandbox Code Playgroud)

编辑:好的,现在我添加了一个hashCode方法,适用于定向边.有人可以帮我计算无向边的哈希吗?

public class Edge {
    private Node first, second;

    @Override
    public /boolean equals(Object ob) {
        if (ob instanceof Edge) {
            Edge edge = (Edge) ob;
            if (first.equals(edge.first)
                    && second.equals(edge.second)
                    || first.equals(edge.second)
                    && second.equals(edge.first))
                return true;
        }
        return false;
   }


    @Override
    public int hashCode() {
        int …
Run Code Online (Sandbox Code Playgroud)

java set hashcode

1
推荐指数
1
解决办法
8281
查看次数

使用string属性覆盖hashCode函数

在下面的代码中,我想使用"term"属性来生成哈希码.如何使用此String属性生成哈希代码?

class Term {
    String term;
    @Override
    public boolean equals(Object o) {
        if (o instanceof Term) {
            return this.term.equals(((Term)o).term);
        }
        return false;
    }
    @Override
    public int hashCode() {
    }
}
Run Code Online (Sandbox Code Playgroud)

java string hashcode

1
推荐指数
1
解决办法
2965
查看次数

根据对象数据生成唯一ID

我正在做一个小项目,最终用户将数据输入表单(jsp).我读取数据并保存到UserObject中,我需要将用户数据存储到一个file 不进入DB中.这里每个用户数据都存储为.txt文件中的单行文本.

我的要求是根据联系号码和电子邮件生成唯一ID,目前我正在考虑生成email-id,hashcode这将是该用户的唯一标识号.但我不想将-ve值作为唯一ID.我使用以下代码生成`hashcode'.

 static int hashCode(User u) {
    int hash = 37;
    if (u != null) {
        if (u.email != null && u.email.length() > 0) {

            hash = "1@d&$2u".hashCode() + hash
                    + u.email.toLowerCase().hashCode();
        }
    }

    return hash;

}
Run Code Online (Sandbox Code Playgroud)

我在这里做错了吗?有没有其他方法可以根据电子邮件为每个用户对象生成唯一ID.如果两个用户对象相同email id,则两个对象hashcode 必须相同.

java file hashcode

1
推荐指数
1
解决办法
979
查看次数

任何HashMap方法都不会调用重写的hashCode()函数

我在Supplier下面给出的类中重写了hashCode()和equals()方法.

public class Supplier {

private final String name;

public Supplier(String name) {
    this.name = name;
}

public String getName() {
    return name;
}

@Override
public int hashCode() {        
    char[] charArray = name.toCharArray();
    int sumOfchars = 0;
    for (char element : charArray) {
        sumOfchars += element;
    }
    return 51 * sumOfchars;
}

@Override
public boolean equals(Object o) {        
    if (o == null) {
        return false;
    }
    if (getClass() != o.getClass()) {
        return false;
    }
    final Supplier other = …
Run Code Online (Sandbox Code Playgroud)

java equals hashmap hashcode

1
推荐指数
1
解决办法
803
查看次数

为什么这个hashCode()方法被认为很差?

这是" 在Java 8中使用Java 7 HashMap "的后续问题.有一些有趣的评论.有些我很清楚; 其他人少.

为什么这种hashCode()方法被认为很差?

乍一看,我觉得这很合理.也许17可以增加到31.否则,它似乎遵循普遍接受的公式Arrays.hashCode(Object[]).一个猜测:它适用于一般情况,其中项目数量相对较小(小于10.000),但对于非常大的集合(1.000.000或更高)表现不佳.

这是原始代码:(包含所有内容以提供一些上下文.)

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

public class Test1 {

static int max_k1 = 500;
static int max_k2 = 500;

static Map<Node, Node> map;
static Random random = new Random();

public static void main(String[] args) {
    for (int i = 0; i < 15; i++) {
        long start = System.nanoTime();
        run();
        long end = System.nanoTime();
        System.out.println((end - start) / 1000_000);
    }
}

private static void run() …
Run Code Online (Sandbox Code Playgroud)

java performance hashmap hashcode

1
推荐指数
1
解决办法
539
查看次数

如何为有限精度的double值编写正确的hashcode方法?

Foo如果double成员在另一个对象的给定范围内,则认为类的对象是相等的.由于浮点运算,可以容易地引入这样的错误.

该方法 isDoubleEqualsdoubleArrayEquals的部分相等,但合同规定哈希码必须是相等的对象相同的会照顾.双精度的默认哈希码不会将close值映射到相同的值,因此为匹配双精度数获取相同哈希值的好方法是什么?

public class Foo {

    double[] values;

    public Foo(double[] values) {
        this.values = values;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        //TODO Arrays.hashCode will not work with the contract
        result = prime * result + Arrays.hashCode(values);
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Foo other = …
Run Code Online (Sandbox Code Playgroud)

java equals hashcode

1
推荐指数
1
解决办法
118
查看次数

标签 统计

hashcode ×10

java ×9

equals ×2

hashmap ×2

file ×1

guava ×1

hash ×1

map ×1

performance ×1

set ×1

sharethis ×1

string ×1