2016-03-04 20 views
1

我在Java的一個字符串數組像如何創建數組元素的副本?

String arr[] = {"A", "B" , "C", "D"}; 

現在我所要做的是,服用任何整型數字從用戶喜歡e.g 8,我要打印對應於數字字母。 但是,每當arr []完成後,每當「A」= 1,「B」= 2,「C」= 3,「D」= 4時,那麼它就會創建每個元素的副本如例如陣列和從那裏開始

arr[] = {"A","A", "B","B", "C","C", "D","D"} 

所以根據計數到數字 「A」 的,現在的值= 5, 「A」= 6, 「B」= 7, 「B」= 8。

所以答案應該是打印「B」。

類似地,數值的值可以是任何值,因此它必須創建數組並找到值。

+0

那你試試? –

+0

Rajaprabhu @現在我仍在思考,無法得到任何有效或好的方法來做同樣的事情。 –

回答

1

我認爲你想要做的最好的解決方案是HashMap。 在java中向正常數組添加條目是不可能的,因爲它們的大小不能改變。 HashMap提供了可擴展性和對索引的引用(例如:「potato」=「First-class」,「strawberry」=「Second-class」)等的可能性。 HashMaps的小概述:http://javarevisited.blogspot.fr/2011/02/how-hashmap-works-in-java.html

0

您不需要真正複製元素,只需要跟蹤您將複製元素的次數。這是做它的有效方法:

public static String selectString(String[] arr, int n) { 
    //n--; Add this line if you want n=1 to be the first element, rather than n=0 
    int size = arr.length; 
    int duplicate = 1; 

    while(n >= size) { 
     n -= size; 
     size *= 2; 
     duplicate *= 2; 
    } 

    return arr[n/duplicate]; 
} 

這裏的第一個13的輸出:

0:A 1:B 2:C 3:D 4:A 5:A 6:B 7:B 8:C 9:C 10:D 11:D 12:A