我需要创建一个频率表,它接受存储在数组或ArrayList
中的字符串,并使用返回String的intern
方法。我曾希望做类似以下的事情,但它没有用。
for(int i = 0; i < myArray.length; i++) {
if(myArray[i] == new String(myArray[i]).intern()) {
myMap.put(myArray[i], myMap.get(myArray[i]) + 1);
} else {
myMap.put(myArray[i], 1);
}
}
我承认有更好的方法来创建频率表,但任务约束是有约束力的。
EDITED
好的,根据评论判断,这没有用。所以让我们回过头来。
我已从文本文件中导入字符串,删除了特殊字符,将文本转换为小写,然后将单个字词存储在ArrayList
中。我保留了相同单词的副本,因为我试图创建单词的频率表。我的任务是在我的代码中的某处使用字符串实习方法来加快这个过程!
正如本论坛上经常指出的,以及我可以在网上找到的所有其他资源,字符串实习方法可用于使用逻辑运算符“==”
测试两个字符串对象引用的相等性。例如:
String s1 = new String("first").intern();
String s2 = "first";
String s3 = new String("first");
System.out.println(s1 == s2); //prints true
System.out.println(s2 == s3); //prints false
System.out.println(s1 == s3); //print false
但我要处理成千上万的单词!如何创建一个为一个实习字符串创建如此多对象引用的进程,然后使用字符串池对每个进行测试,以便知道是否将字频增加一个?