首先,我想说这是一个一般性的问题,不是关于我给出的具体例子,而只是一个概念性的话题。
示例1:我正在使用UUID.java创建一个真正随机的字符串。比方说,我从来不希望生成相同的UUID。这里有一个关于这种情况的想法:(假设我将列表保存/加载在最上面--这不是重点)
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class Example {
/**
* A final List<String> of all previous UUIDs ge
我应该用哈希表实现一个接口。问题是,我得到了错误的输出,这是由于冲突(据我所理解)。这段代码不是我一个人写的,我一直在寻求帮助。我不是Java的大师,在我的课程早期,所以这一切对我来说都很困难,所以请耐心点。
到目前为止,我的代码如下:
runStringDictionary.java
import java.io.BufferedReader;
import java.io.FileReader;
public class runStringDictionary {
/**
* @param args
*/
public static void mai
我试图在一些普林斯顿大学关于它的文章的基础上用Java编写一个哈希表。
最常用的散列方法是模散列:我们选择数组大小M为素数,对于任何正整数键k,当k除以M时,计算余数。这个函数非常容易计算(在Java中,k%M),并且有效地将键均匀地分散到0到M-1之间。
这个部分是有意义的--不管是多少,哈希表大小的模数都会在这个范围内给出一些数组索引。
弦乐。模块散列也适用于长键(例如字符串):我们只是把它们当作巨大的整数来处理。例如,下面的代码计算字符串s的模块散列函数,其中R是一个小素数整数(Java使用31)。
然后提供了一个代码示例,但我没有理解。
int hash = 0;
for (int i
我是java的新手,正在创建一个电话簿应用程序,允许用户按姓名或电话进行搜索。您可以按名称搜索并获得用户的电话号码,反之亦然。我已经通过使用2D数组对用户进行了硬编码,我知道这并不是很有效。我想创建一个弹出按钮,打开一个JDialog,让用户输入姓名和电话号码,然后自动将用户的姓名和号码放入数组中。我知道为了做到这一点,我可能需要使用一个集合,比如arrayList或其他东西,但我想看看是否有人可以引导我朝着正确的、最有效的方向前进。到目前为止,以下是我的代码
public class PhoneBookGUI implements ActionListener{
JLabel name;
我有Employee类,希望在HashMap中使用这个类作为键,该映射的值将是一个字符串。但是,为了实现这一点,我重写了Employee类本身中的equals和hashcode方法。我还有一个类要测试Employee类键是否正确工作。经过测试后,我发现map正在存储重复的密钥。请查找以下源代码和输出:
Employee.java
public class Employee {
private int empId;
private String empName;
private int empAge;
Employee(){}
public int
为什么这个代码会给出一个负的哈希码?
import java.util.HashSet;
import java.util.Set;
public class Ab {
/**
* @param args
*/
public static void main(String[] args) {
String s1="Operations on a dynamic set can be grouped into two categories queries, which simply return information about the
有吗? 创建新的Java对象?对于我的快速测试,情况似乎并非如此。呼叫 在两个不同的对象上,它具有相同的哈希码。 import com.mydomain.proto.users.api.User;
...
User a = User.newBuilder().setUserUuid("1111111111").build();
User b = User.newBuilder().setUserUuid("1111111111").build();
System.out.println("a hashcode: " + a.hashCod
我需要对字符串使用散列和对散列(双向)函数。散列应该是固定长度(5-6个符号)。
示例:
String hashed = MagicHashLib.hash("long string"); //hash is hd45dk as an example
String enhashedLongString = MagicHashLib.enhash(hash);
是否已经在Java中实现了算法?还是我应该自己写?
假设我们有一个类SomeInt,它只包含一个final int value:
public class SomeInt
{
private final int value;
public SomeInt(int value)
{
this.value = value;
}
public int getValue()
{
return this.value;
}
}
选项A-过环equals和hashCode:
public class SomeInt
{
private final int va
在我看来,对象的hashCode()可能与C++中的对象地址相同,因此我期望对象的hashCode在插入数据之前和之后保持不变。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* Created by charlie on 2015/12/11.
*/
public class Hello {
public static void main(String[] args) {
List<Integer> a = new ArrayList&
我有大量的整数集合,它的值只能增长(我在数东西)。
出于效率原因,我分别保留了一个最大值,在需要时会更新该值:
// when increasing the i'th count
coll[i] += 1;
// check whether also to update the max:
if(coll[i] > max){
max = coll[i];
}
有什么有效的算法也可以“跟踪”集合的最小值?
我的意思是,尽可能少地迭代整个集合,并保持较小的内存占用。(后者实际上不如前者重要)
我使用的是Java:如果上述算法已经在JRE中,我将欢迎参考。