根据这篇博客文章,HashMap 在已经检索到的哈希码上重新调用它自己的hashCode()(被调用的hash())实现.
如果key不为null,那么它将调用key对象的hashfunction,参见上面方法中的第4行,即key.hashCode(),所以在key.hashCode()返回hashValue之后,第4行看起来像
int hash = hash(hashValue)
现在,它将返回的hashValue应用到自己的散列函数中.
我们可能想知道为什么我们使用hash(hashValue)再次计算hashvalue.答案是,它防御质量差的哈希>函数.
HashMap能否准确地重新分配哈希码?HashMap可以存储对象,但是它无权访问将hashCode分配给其对象的逻辑.例如,hash()无法集成以下hashCode()实现背后的逻辑:
public class Employee {
protected long employeeId;
protected String firstName;
protected String lastName;
public int hashCode(){
return (int) employeeId;
}
}
Run Code Online (Sandbox Code Playgroud) 基于 Coursera 机器学习课程,我正在尝试在 python 中实现神经网络的成本函数。有一个与此类似的问题- 有一个可接受的答案 - 但该答案中的代码是用八度写的。不要偷懒,我已经尝试将答案的相关概念适应我的案例,据我所知,我正在正确实现该功能。然而,我输出的成本与预期成本不同,所以我做错了。
这是一个可重现的小示例:
以下链接指向一个.npz可以加载的文件(如下所示)以获取相关数据。"arrays.npz"如果您使用它,请重命名文件。
http://www.filedropper.com/arrays_1
if __name__ == "__main__":
with np.load("arrays.npz") as data:
thrLayer = data['thrLayer'] # The final layer post activation; you
# can derive this final layer, if verification needed, using weights below
thetaO = data['thetaO'] # The weight array between layers 1 and 2
thetaT = data['thetaT'] # The weight array between layers 2 and 3
Ynew = data['Ynew'] # The output array with a …Run Code Online (Sandbox Code Playgroud) 我知道ValueError: too many values to unpack (expected 4)当将更多变量设置为值而不是函数返回时,会出现此错误消息()。
scipy.stats.linregress根据scipy文档(http://docs.scipy.org/doc/scipy/reference/generation/scipy.stats.linregress.html)返回5个值。
这是一个简短的,可复制的示例,它是对的工作呼叫,然后是失败的呼叫linregress:
有什么可以解释差异的原因,为什么第二个没有得到很好的称呼呢?
from scipy import stats
import numpy as np
if __name__ == '__main__':
x = np.random.random(10)
y = np.random.random(10)
print(x,y)
slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)
'''
Code above works
Code below fails
'''
X = np.asarray([[-15.93675813],
[-29.15297922],
[ 36.18954863],
[ 37.49218733],
[-48.05882945],
[ -8.94145794],
[ 15.30779289],
[-34.70626581],
[ 1.38915437],
[-44.38375985],
[ 7.01350208],
[ 22.76274892]])
Y = np.asarray( [[ 2.13431051],
[ 1.17325668], …Run Code Online (Sandbox Code Playgroud) 我的toString方法中出现空指针异常错误.我不知道为什么.错误可以通过多种方式发生.最常见的是,声明了对象的引用,但对象本身仍未创建.我已声明并创建(初始化正确的单词?)Mycircle circle1 = new Mycircle ();和Mypoint center = new Mypoint ();
当我调用我的getter方法时,我怀疑我没有初始化任何字段,但事实并非如此.setter方法干净利落 - 我已成功输入值.这是否意味着我的getter方法可以访问某些非null值.
import java.util.Scanner;
public class MyCircle {
private Mypoint center;
private double radius;
Scanner input = new Scanner (System.in);
public MyCircle() {
radius = 0.0;
Mypoint center = new Mypoint ();
System.out.println("Enter coordinates here");
center.setCoordinateX(input.nextDouble());
center.setCoordinateY(input.nextDouble());
}
public String toString(MyCircle object) {
return "Circle @ " + "(" + object.center.getCoordinateX() + "," +
object.center.getCoordinateY() + ")" + ". Its radius is " +
object.radius; …Run Code Online (Sandbox Code Playgroud) 在一个方法中,我打两个电话.第一个调用构造并从另一个方法返回一个hashset.第二个调用将此新构造的集合添加到现有集合,作为参数传递给此方法.
public static void someMethod(java.util.HashSet<Coordinate> invalidPositions)
{
java.util.HashSet<Coordinate> newSet = SomeClass.getInvalidPositions(x, y);
invalidPositions.addAll(newSet);
}
Run Code Online (Sandbox Code Playgroud)
通常,传入的集合(预先存在的集合)将添加另一个集合,其内容与其自身相同!那是,setOne.equals(setTwo) == true
然而,JavaDocs没有添加其他集合,而是说addAll():
public boolean addAll(Collection c)
将指定集合中的所有元素添加到此集合中(可选操作).如果在操作正在进行时修改了指定的集合,则此操作的行为是不确定的.(这意味着如果指定的集合是此集合,则此调用的行为是未定义的,并且此集合是非空的.)
我理解正确吗?如果两组相等,java将不支持另一组的添加?如果这是真的,有没有理由以这种方式设计语言?
我正在打印以下行:
Files.exists(Paths.get("card/1.png"),java.nio.file.LinkOption.NOFOLLOW_LINKS);
使用Paths.get(...),我想检索从我的根目录开始的文件夹的路径,而不是在我当前的工作目录.我依稀记得,但现在不记得了,一些表达式开始在根文件检索.
表达式类似于~/我可以写的Paths.get(~/A/B);
如果不存在这样的表达式,那么在用户的最顶层文件夹中开始检索的最佳替代方法是什么?
playerList包含两个Player对象(str分别调用属性"a"和"b"),以及Player实现__str__和__repr__.当我连接str(playerList)到另一个字符串时,我希望该字符串可以通过某种形式附加"[a, b]".相反,结果字符串附加"[ , ]".我犯了什么错误给出了这个结果?
这是我写的
prompt = "And then choose the opponent you would like to attack from " + str(playerList)
def __str__ (self):
return self.name
def __repr__ (self):
return str()
Run Code Online (Sandbox Code Playgroud)
我在stdout上得到了什么:
"And then choose the opponent you would like to attack from [, ]"
Run Code Online (Sandbox Code Playgroud)
我想要的是:
"And then choose the opponent you would like to attack from [a,b]"
Run Code Online (Sandbox Code Playgroud)