[英]LazyInitializationException even though @Transactional is used
[英]Duplicates in Array even though a Set was used
对于一个类项目,我们必须取一个字符串(一个段落),使其成为单个单词的数组,然后将这些单词变成Object Array的对象。 单词不能重复,所以我使用Set只获取唯一值,但只有某些单词重复! 这是方法的代码。 抱歉,含糊不清的描述。
Private void processDocument()
{
String r = docReader.getLine();
lines++;
while(docReader.hasLines()==true)
{
r= r+" " +docReader.getLine();
lines++;
}
r = r.trim();
String[] linewords = r.split(" ");
while(linewords.length>words.length)
{
this.expandWords();
}
String[] newWord = new String[linewords.length];
for(int i=0;i<linewords.length;i++)
{
newWord[i] = (this.stripPunctuation(linewords[i]));
}
Set<String> set = new HashSet<String>(Arrays.asList(newWord));
Object[]newArray = set.toArray();
words = new Word[set.size()-1];
String newString = null;
for(int i =0;i<set.size();i++)
{
if(i==0)
{
newString = newArray[i].toString() + "";
}
else
{
newString = newString+newArray[i].toString()+" ";
}
}
newString = newString.trim();
String[] newWord2 = newString.split(" ");
for(int j=0;j<set.size()-1;j++)
{
Word newWordz = new Word(newWord2[j].toLowerCase());
words[j] = newWordz;
}
我相信问题是当你把它放入HashSet时,单词的大小写不同,导致HashCode不同。 在从文件中读取所有内容时,将所有内容都转换为小写,它应该可以正常工作。
newWord[i] = (this.stripPunctuation(linewords[i])).toLowerCase();
尝试这个:
public String[] unique(String[] array) {
return new HashSet<String>(Arrays.asList(array)).toArray();
}
此外,如@Brinnis所述,请确保修剪单词并在正确的情况下。
for(int i = 0; i < linewords.length; i++) {
newWord[i] = this.stripPunctuation(linewords[i]).toLowerCase();
}
String[] newArray = unique(newWord);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.