相关疑难解决方法(0)

TreeSet和HashSet中的addAll如何工作?

当我在treeSet上添加我的数据时,几乎丢失了所有数据.似乎我只有我的第一个元素.

我读了这个问题Hashset vs Treeset进行代码优化,我尝试做类似的事情.但我并没有真正成功.

输入:

int iValue = 0;

    HashSet<TagResult> results = new HashSet<TagResult>();
    for(Document doc : docs) {
        NodeList nList = doc.getElementsByTagName("TEXT");

        for (int temp = 0; temp < nList.getLength(); temp++) {
            Node nNode = nList.item(temp);
            if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                Element eElement = (Element) nNode;
                iValue = searchWords.searchOnTag(eElement, szSearch);
                if(iValue > 0) {
                    results.add(new TagResult(eElement, iValue));
                }
            }
        }
    }
    System.out.println("Set :\n-------------------------");
    for(TagResult result : results) {
        System.out.println(getTagValue("Tag",result.getElement()));
    }
    Set<TagResult> sortedResult = new TreeSet<TagResult>(new Comparator<TagResult>() { …
Run Code Online (Sandbox Code Playgroud)

java hashset treeset

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

HashSet 和 TreeSet 性能测试

我读到了 TreeSet 比 HashSet 慢的原因(将元素添加到 TreeSet 中更慢)所以我进行了性能测试,我试图找出将元素添加到 HashSet 然后将它们移动到 TreeSet 或首先把它们放在那里。看起来将元素插入 HashSet 更快,但只有当我插入大量元素时,为什么?我读过,如果我不需要对元素进行排序,请始终使用 HashSet,但显然,有时它会更慢。

当我插入一个具体的值(“1”)而不是随机数时,TreeSet 也更快,因为没有排序,那么我怎么知道什么时候使用 HashSet 或 TreeSet?

我的第二个问题,当我像这样创建 TreeSet 时,为什么我不能访问“NavigableSet”方法?

Set<Integer> treeSet = new TreeSet<Integer>();     //cant type treeSet.lower(e: E)
TreeSet<Integer> treeSet = new TreeSet<Integer>(); //can  type treeSet.lower(e: E)
Run Code Online (Sandbox Code Playgroud)

谢谢你帮我解决这个问题。

结果如下:

5 000 000(随机数)

在此处输入图片说明

5 000 000(数字“1”)

在此处输入图片说明

500 000(随机数)

在此处输入图片说明

50 000(随机数)

在此处输入图片说明

这是我的代码:

package performancetest;

import java.text.DecimalFormat;
import java.util.HashSet;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.TreeSet;

public class HashSet_vs_TreeSet {
private static DecimalFormat df = new DecimalFormat("#.#####");
private static double hashTime, …
Run Code Online (Sandbox Code Playgroud)

java performance hashset treeset

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

包含TreeSet与另一个Set

是否打开contains方法TreeSet(因为它已经默认排序)比说快HashSet

我问的原因是Collections.binarySearch如果List被排序的话会很快,所以我想也许TreeSet的contains方法可能是相同的.

java collections contains set binary-search

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

如何在Java中联合列出<Date> list1和List <Date> list2?

  public class ArrayOfArrayList {
public static void main(String[] args) {
    List<Date> dateList1 = new ArrayList<Date>();
    List<Date> dateList2 = new ArrayList<Date>();
    Calendar cal = new GregorianCalendar();
    for(int i = 0; i < 5; i++) {
        Date d1 = new Date();
        cal.setTime(d1);
        cal.add(Calendar.DATE, i);
        dateList1.add(cal.getTime());
    }
    System.out.println("   *************** Date List 1st ****************");
    for(Date date1 : dateList1) {
        System.out.println("1stList"+date1);
    }
    System.out.println("   *************** Date List 1st ****************");

    for(int i = 2; i < 8; i++) {
        Date d2 = new Date();
        cal.setTime(d2);
        cal.add(Calendar.DATE, i); …
Run Code Online (Sandbox Code Playgroud)

java union arraylist duplicates

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

ArrayList与HashSet中的removeAll()

我发现对于相当大的数组(超过1000个条目),这些方法比A.removeAll(B)a更快.HashSetArrayList

您是否知道如何实施这些方法以及如何解释这些差异?

java arraylist hashset removeall

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

Java中未排序的HashSet

码.

Set<String> set = new HashSet<String>(3);
set.add("3 Lorem");
set.add("1 Lorem");
set.add("2 Lorem");
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
    String type = (String) iterator.next();
    System.out.println(type);
}
Run Code Online (Sandbox Code Playgroud)

输出.

2 Lorem
3 Lorem
1 Lorem
Run Code Online (Sandbox Code Playgroud)

这个命令对我来说很奇怪.我添加3 Lorem,1 Lorem然后2 Lorem.为什么它们在输出中的顺序不同?

java hashset

0
推荐指数
2
解决办法
3416
查看次数

HashSet使用HashTable作为数据结构,HashMap作为集合使用?不建议使用内存点视图数组?

按照这个

HashSet的基础数据结构是哈希表.

但我还读到HashSet在内部使用HashMap来避免重复值,而重复值又在内部使用了桶数组和LinkedList(在Java 8中由树替换)

那么说HashSet使用HashTable作为数据结构和HashMap作为集合是正确的吗?

TreeSet实现SortedSet接口,因此不允许重复值.

这是否意味着TreeSet不在内部使用HashMap来使用HashSet来避免重复值?LinkedHashSet是否在内部使用HashMap?

按照这个

建议不要使用内存点视图数组.

为什么?通过我之前阅读的内容 -

由于无法为原始数据类型创建ArrayList,因此ArrayList的成员始终引用不同内存位置的对象(有关详细信息,请参阅此处).因此,在ArrayList中,实际对象永远不会存储在连续的位置.实际对象的引用存储在连续的位置.在数组中,它取决于数组是基本类型还是对象类型.在原始类型的情况下,实际值是连续的位置,但是在对象的情况下,分配类似于ArrayList.

java collections arraylist hashmap

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