簡體   English   中英

如何遍歷字符串數組中的所有字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM