我对关于哪种哈希码实现更好的 Java 面试问题感到困惑。我们有一个类 Point {int x, y; }. 为什么这个类的 hashcode 31 * x + y 的实现比 x + y 好?正确的答案是“乘数创建了哈希码值对字段处理顺序的依赖,这最终会产生更好的哈希函数”。但我不明白为什么处理的顺序是这里的重点,因为当我执行 point1.equals(point2); 时,整个表达式 31 * x + y 正在计算;并且无论它以何种顺序发生。我错了吗?
我正在尝试在自己编写的复选框组件中动态呈现字体超赞图标。当我尝试在点击后用字体真棒图标更新状态时,它没有更新。我试图将渲染移到单独的功能,并尝试使用react-fontawesome,但没有任何帮助。状态正在更新,但超棒的字体图标与html中的svg代码相同。
...
state = {
checked: this.props.checked
}
toggleCheck = () => {
this.setState({ checked: !this.state.checked });
};
render () {
const iconUnchecked = 'far fa-square';
const iconChecked = 'fas fa-check-square';
const iconClass = this.state.checked ? iconChecked : iconUnchecked;
return (
<span onClick={this.toggleCheck}>
<i className={iconClass} />
</span>
);
}
Run Code Online (Sandbox Code Playgroud)