[英]How to loop over all characters in a String array
我正在做一個哈希表項目。 所以我有一個將容納字符串的數組。 ArrayList<String> buckets = new ArrayList<>();
我想創建一個方法hash
但我仍然堅持如何使該方法接受一個String並循環遍歷該字符串中的各個字符,然后將它們的數字值求和,然后返回整數和。
方法hash
將用於以下測試:
@Test
public void testToString() {
HashTable h= new HashTable(10);
org.junit.Assert.assertEquals( "Empty hash output" ,
"(0)\t\n"
+"(1)\t\n"
+"(2)\t\n"
+"(3)\t\n"
+"(4)\t\n"
+"(5)\t\n"
+"(6)\t\n"
+"(7)\t\n"
+"(8)\t\n"
+"(9)\t\n"
, h+""/*.toString()*/
);
}
@Test
public void hashFunction() {
HashTable h= new HashTable(10);
org.junit.Assert.assertEquals( "hash function test" ,
4
, h.hash("abc") % h.size()
);
org.junit.Assert.assertEquals( "hash function test backwards string" ,
4
, h.hash("cba") % h.size()
);
預先感謝您!
有幾種方法可以執行此操作-例如,可以使用charAt(i)
和for
循環:
int sum = 0;
for (int i = 0 ; i != s.length() ; i++) {
sum += s.charAt(i);
}
您也可以將字符串轉換為字符數組,並在for (char ch : s.toCharArray())
語句中使用它,但這將導致為字符數組分配額外的內存。
注意1:您應注意數字溢出。
注意2:考慮使用其他方法來計算哈希值。 添加字符代碼將可以工作,但是具有重新排序的字符的字符串將具有相同的哈希碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.