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中?它似乎没有变量名
# 1 楼答案
ArrayList还有另一个构造函数,它接受Java Collections子类。所以你可以做
shingleArrayList = new ArrayList<>(shingleTrimSet)
如果只想对集合进行排序,可以使用
Collections.sort
或只使用一个树集,使其元素按自然顺序排序# 2 楼答案
木瓦装饰板。toArray(新字符串[shingleTrimSet.size()])
如果直接传递新数组,并且不再引用它。。。在那之后你会怎么得到它
试着这样做:
# 3 楼答案
它没有变量名,因为你没有给它一个
但这不是一个
ArrayList
,而是一个数组。你可以如果没有副本也可以用