标签: linkedhashset

LinkHashMap/LinkedHashSet中的迭代排序如何导致性能低于HashMap

由于LinkedHashMap/Set保持Collection中的条目顺序,因此它会导致性能稍低.我想知道为什么会这样.

java collections linkedhashmap linkedhashset

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

LinkedHashSet修改集

我有以下代码:

  private static class Node {
    public LinkedHashSet<String> s = new LinkedHashSet<String>();
    public Node(String s) {
        this.s.add(s);
    }
}

public static void main(String[] args) {
    LinkedHashSet<Node> set1 = new LinkedHashSet<Node>();
    set1.add(new Node("foo"));

    LinkedHashSet<Node> set2 = new LinkedHashSet<Node>(set1);

    LinkedHashSet<String> modifyingSet = new LinkedHashSet<String>();
    modifyingSet.add("modifying foo");

    for(Node n : set2) {
        n.s = new LinkedHashSet<String>(modifyingSet);
        break;
    }

    if (compare(set1, set2)) {
        System.out.println("Equal");
    } else {
        System.out.println("Not Equal");
    }

    return;
 }
private static boolean compare(LinkedHashSet<Node> h1, LinkedHashSet<Node> h2) {
      Iterator<Node> h1i = h1.iterator(); …
Run Code Online (Sandbox Code Playgroud)

java linkedhashset

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

LinkedHashSet javadoc中的错误?

也许我很挑剔,但在javadoc中有关于LinkedHashSet实现的以下信息:

此实现与HashSet的不同之处在于它维护了一个贯穿其所有条目的双向链表.

我在LinkedHashSet类中找不到任何双链表.有人可以帮忙吗?

java collections javadoc set linkedhashset

0
推荐指数
1
解决办法
426
查看次数

LinkedHashSet迭代不按升序排列?

在以下代码中,如果参数为{1,3,2},则在while循环中,i为1,3,2.

我已经在使用LinkedHashSet,为什么订单不是1,2,3?我还需要做什么才能按升序进行迭代?

无法在o(log n)时间内使用TreeSetadd, remove, contains().

public static void iterate(int[] num) {
    LinkedHashSet<Integer> set = new LinkedHashSet<Integer>();

    for (int i : num) {
        set.add(i);
    }

    Iterator<Integer> iter = set.iterator();
    while (iter.hasNext()) {
        // WHY IS i THE SAME ORDER AS INSERATION ORDER, NOT ASSENDING ORDER?
        int i = iter.next();
    }
}
Run Code Online (Sandbox Code Playgroud)

java collections linkedhashset data-structures

0
推荐指数
1
解决办法
1039
查看次数

在jsinterop中哪里可以找到LinkedHashSet?

我在GWT中有以下实体

@JsType(namespace = "my.entities")
public class MyEntity {
   private Set<String> texts;
   public Set<String> getTexts(){
       if(this.texts==null)
           this.texts=new LinkedHashSet<String>();
       return this.texts;
   }

   public void setTexts(Set<String> texts){
       this.texts=texts;
   }

}
Run Code Online (Sandbox Code Playgroud)

当我myEntityVar.getTexts()用Java语言调用时,返回的对象是HashSet。似乎jsinterop将HashSet的java实现转换为JavaScript。但是如何使用JavaScript创建新的HashSet myEntityVar.setTexts(texts)呢?我为“文本”参数尝试了一个数组,但这不起作用。因此,我需要以某种方式在JavaScript中使用HashSet。但是,我不知道在哪里找到它。任何的想法?

gwt linkedhashset gwt-jsinterop

0
推荐指数
1
解决办法
72
查看次数

LinkedHashSet不是删除重复项

我使用LinkedHashSet删除重复的条目.但对于以下自定义模型,Set仍保留重复条目.请帮我找到错误.覆盖equals方法有什么问题吗?对于您的类型信息,我只在他们的电话,类型和状态相同时处理两个节点等于.

public class BlockNode { 
    public int id;
    public int type;
    public int status;
    public String phone;
    public String date;
    public String content;

    @Override
    public boolean equals(Object o) {
        return this.toString().equals(((BlockNode)o).toString());
    }

    @Override
    public String toString() {
        return "number:" + phone + " type:" + type + " status:" + status + "\n"; 
    }
}
Run Code Online (Sandbox Code Playgroud)

java collections set duplicate-removal linkedhashset

-1
推荐指数
1
解决办法
1082
查看次数

Java两个Set对象 - hashCode()是相同的但.equals()失败

我有两个自定义对象集(LinkedHashSet),它们覆盖了hashCode()和equals()方法.

比较这两个集合时,即使哈希码相同,equal()方法也会失败.

    System.out.println("cmContacts.equals(cm2Contacts):" + cmContacts.equals(cm2Contacts));
    System.out.println("cm2Contacts.equals(cmContacts):" + cm2Contacts.equals(cmContacts));
    System.out.println("compare hash codes:" + ( cm2Contacts.hashCode() == cmContacts.hashCode() ) );        
Run Code Online (Sandbox Code Playgroud)

返回:

cmContacts.equals(cm2Contacts):假

cm2Contacts.equals(cmContacts):假

比较哈希码:true

根据文档,如果哈希码相同,则equals方法应该返回true.

集合的哈希码被定义为集合中元素的哈希码的总和,其中空元素的哈希码被定义为零.这确保了s1.equals(s2)意味着对于任何两个集合s1和s2的s1.hashCode()== s2.hashCode(),如Object.hashCode()的常规协定所要求的那样.

https://docs.oracle.com/javase/7/docs/api/java/util/Set.html#equals(java.lang.Object)

任何想法为什么会这样?

java hash set linkedhashset

-2
推荐指数
1
解决办法
673
查看次数