有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用Set。toArray()用于对字符串进行排序?

我已经找到了很多将集合转换为ArrayList的方法,但没有一种方法能真正解决我的问题。我这里有一个程序可以读取文件。txt并使用Jaccard相似矩阵确定相似句子之间的相似程度。文件中的内容。详情如下:

The cat in the hat
The cat sat on the mat
Pigs in a blanket

然后我有一个for循环,它将每行上的每个字符和相邻的字符配对,并将它们放入哈希集中以确保唯一性。像这样:

[ c, in, h, i, t , n , at, Th, t, th, ha, e , he, ca]
[ c, t , m, sa, o, n , at, s, Th, t, th, ma, e , he, ca, on]
[ a, b, in, i, bl, gs, s , an, et, n , la, Pi, ke, nk, ig, a ]

我现在的问题是将字符对从集合中取出并放入ArrayList进行排序,然后使用String将一行中的每一对字符与另一行中的另一对字符进行比较。Jaccard公式的等于():J=匹配数/唯一对数。我有一个单一的一套是回收后,它与第一行填充

    HashSet<String> shingleTrimSet = new HashSet<String>();
    List<String> shingleArrayList = new ArrayList<String>();

    System.out.println("\nSorted Shingles:");

    for(int i = 0; i < lineCount; i++){
        shingleTrimSet.clear();

        for(int idx = 0, jdx = 1; idx+1 < lines[i].length(); idx++, jdx++){
            shingleTrimSet.add( lines[i].substring( idx, jdx+1 ) );
        }
        shingleTrimSet.toArray( new String[shingleTrimSet.size()] );

    }

木瓦装饰板。toArray(新字符串[shingleTrimSet.size()])在这种情况下工作,但我不知道以后如何将其用于其他用途。我如何知道集合已放置在哪个ArrayList中?它似乎没有变量名


共 (3) 个答案

  1. # 1 楼答案

    ArrayList还有另一个构造函数,它接受Java Collections子类。所以你可以做shingleArrayList = new ArrayList<>(shingleTrimSet)

    如果只想对集合进行排序,可以使用Collections.sort或只使用一个树集,使其元素按自然顺序排序

  2. # 2 楼答案

    木瓦装饰板。toArray(新字符串[shingleTrimSet.size()])

    如果直接传递新数组,并且不再引用它。。。在那之后你会怎么得到它

    试着这样做:

    String newString = new String[shingleTrimSet.size()]; and then
    shingleTrimSet.toArray( newString );
    
  3. # 3 楼答案

    它没有变量名,因为你没有给它一个

    String[] array = shingleTrimSet.toArray( new String[shingleTrimSet.size()] );
    

    但这不是一个ArrayList,而是一个数组。你可以

    shingleArrayList.addAll(shingleTrimSet);
    

    如果没有副本也可以用