小编Ars*_*huk的帖子

Nashorn,Java集合,如何在纯javascript中实现equals和hashCode

我遇到了以下问题.我想使用java.util.HashMap,并java.util.PriorityQueue犀牛脚本,在这里我需要使用特定的自定义对象为在HashMap的关键,并且还使用HashMap.containsKey()以检查是否有在Map中的键(另一种选择是检查的对象Collection.contains(Object o)).

所以,显然,我需要在我的对象中基于一些字段值实现equals和hashCode.

例如:

  1. 试图使用JavaScript.由于JavaScript没有那些方法不起作用.请参阅样品1样品2

  2. 扩展java.lang.Object.样本3.部分工作,正在调用方法.但

    • 如何使用参数插入构造函数?
    • 如何进行演员:[object Object]到其他:jdk.nashorn.javaadapters.java.lang.Object @ 0,反之亦然?
  3. 在Java中实现我的自定义类并在JavaScript中扩展它.样本4.作品.但如果我必须使用Java,我是否需要Nashorn?

var PriorityQueue = java.util.PriorityQueue;
var HashMap = java.util.HashMap;
var Integer = java.lang.Integer;

// Sample 1
// Doesn't work, equals and hashCode are not being invoked
function Vertex1(from, cost) {
    this.from = from;
    this.cost = cost;

    this.equals = function(other) { return this.from == other.from; }
    this.hashCode = function() { return Integer.hashCode(this.from); } …
Run Code Online (Sandbox Code Playgroud)

javascript java equals hashcode nashorn

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

标签 统计

equals ×1

hashcode ×1

java ×1

javascript ×1

nashorn ×1