标签: equals

617
推荐指数
11
解决办法
57万
查看次数

如何确定两个JavaScript对象的相等性?

严格的相等运算符将告诉您两个对象类型是否相等.但是,有没有办法判断两个对象是否相等,就像 Java中的哈希码一样

Stack Overflow问题JavaScript中是否有任何类型的hashCode函数?类似于这个问题,但需要更多的学术答案.上面的场景说明了为什么需要有一个,我想知道是否有任何等效的解决方案.

javascript equals object hashcode

599
推荐指数
23
解决办法
45万
查看次数

==和等于()之间的C#差异

我在Silverlight应用程序中有一个比较2个字符串的条件,由于某种原因,当我使用==它时返回false.Equals()返回true.

这是代码:

if (((ListBoxItem)lstBaseMenu.SelectedItem).Content.Equals("Energy Attack"))
{
    // Execute code
}

if (((ListBoxItem)lstBaseMenu.SelectedItem).Content == "Energy Attack")
{
    // Execute code
}
Run Code Online (Sandbox Code Playgroud)

任何理由为什么会这样?

.net c# equals

519
推荐指数
9
解决办法
28万
查看次数

创建完美的JPA实体

我一直在使用JPA(实现Hibernate)一段时间,每次我需要创建实体时,我发现自己正在努力解决AccessType,immutable属性,equals/hashCode等问题.
因此,我决定尝试找出每个问题的一般最佳实践,并将其写下来供个人使用.
但是我不介意任何人对此发表评论或告诉我哪里错了.

实体类

  • 实现Serializable

    原因:规范说你必须这样做,但是有些JPA提供商并没有强制执行.Hibernate作为JPA提供程序并不强制执行此操作,但如果未实现Serializable,它可能会因为ClassCastException而陷入困境.

构造函数

  • 创建一个包含实体所有必填字段的构造函数

    原因:构造函数应始终将创建的实例保持在合理的状态.

  • 除了这个构造函数:有一个包私有默认构造函数

    原因:默认构造函数需要让Hibernate初始化实体; 允许private,但是在没有字节码检测的情况下,运行时代理生成和高效数据检索需要包私有(或公共)可见性.

字段/属性

  • 一般情况下使用字段访问,需要时使用属性访问

    原因:这可能是最有争议的问题,因为对于其中一个(属性访问与字段访问)没有明确和令人信服的论据; 然而,由于更清晰的代码,更好的封装以及不需要为不可变字段创建setter,因此字段访问似乎是最受欢迎的

  • 省略不可变字段的setter(访问类型字段不需要)

  • 属性可能是私有的
    原因:我曾经听说受保护对于(Hibernate)性能更好,但我可以在网上找到的是:Hibernate可以直接访问公共,私有和受保护的访问器方法,以及公共,私有和受保护的字段.选择取决于您,您可以匹配它以适合您的应用程序设计.

等于/的hashCode

  • 如果仅在持久化实体时设置此ID,则永远不要使用生成的id
  • 优先级:使用不可变值来形成唯一的Business Key,并使用它来测试相等性
  • 如果唯一的业务密钥不可用,则使用在初始化实体时创建的非瞬态UUID ; 有关更多信息,请参阅此精彩文章.
  • 从不参考相关实体(ManyToOne); 如果此实体(如父实体)需要成为业务密钥的一部分,则仅比较ID.只要您使用属性访问类型,在代理上调用getId()将不会触发实体的加载.

示例实体

@Entity
@Table(name = "ROOM")
public class Room implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue
    @Column(name = "room_id")
    private Integer id;

    @Column(name = "number") 
    private String number; //immutable

    @Column(name = "capacity")
    private Integer capacity;

    @ManyToOne(fetch = FetchType.LAZY, optional = …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa equals

410
推荐指数
4
解决办法
15万
查看次数

为什么我需要覆盖Java中的equals和hashCode方法?

最近我读了这个 Developer Works文档.

该文档是关于定义hashCode()equals()有效和正确的,但我无法弄清楚为什么我们需要覆盖这两种方法.

如何有效地实施这些方法?

java equals hashcode

355
推荐指数
15
解决办法
39万
查看次数

你为什么要使用String.Equals而不是==?

我最近被介绍到一个大型代码库,并注意到所有的字符串比较都使用String.Equals()而不是==

你觉得这是什么原因?

c# string equals

306
推荐指数
8
解决办法
27万
查看次数

比较两个字符串,忽略C#中的大小写

可能重复:
不同的字符串比较方法有什么区别

以下哪两个更有效?(或者可能还有第三种选择更好吗?)

string val = "AStringValue";

if (val.Equals("astringvalue", StringComparison.InvariantCultureIgnoreCase))
Run Code Online (Sandbox Code Playgroud)

要么

if (val.ToLowerCase() == "astringvalue")
Run Code Online (Sandbox Code Playgroud)

c# string comparison equals

305
推荐指数
6
解决办法
35万
查看次数

从集合中获取元素

为什么不Set提供一个操作来获得一个等于另一个元素的元素?

Set<Foo> set = ...;
...
Foo foo = new Foo(1, 2, 3);
Foo bar = set.get(foo);   // get the Foo element from the Set that equals foo
Run Code Online (Sandbox Code Playgroud)

我可以问一下是否Set包含一个等于的元素bar,为什么我不能得到那个元素?:(

为了澄清,该equals方法被覆盖,但它只检查其中一个字段,而不是所有字段.因此,两个Foo被认为相等的对象实际上可以具有不同的值,这就是我不能使用的原因foo.

java collections equals set

297
推荐指数
9
解决办法
52万
查看次数

集合的hashCode方法的最佳实现

我们如何决定hashCode()集合方法的最佳实现(假设equals方法已被正确覆盖)?

java hash equals hashcode

292
推荐指数
9
解决办法
23万
查看次数

等于(=)与LIKE

使用SQL时,=WHERE子句中使用而不是LIKE

没有任何特殊的操作员,LIKE并且=是一样的,对吧?

sql performance equals sql-like

268
推荐指数
10
解决办法
29万
查看次数