配列の要素をAndroid Java上の特定の位置に移動する方法。 あなただけ移動したい場合我々は配列の要素を特定の位置に移動
int oldPosition, int newPosition
とJSONObjects
配列の要素をAndroid Java上の特定の位置に移動する方法。 あなただけ移動したい場合我々は配列の要素を特定の位置に移動
int oldPosition, int newPosition
とJSONObjects
のいくつかのような
JSONObject[] tmp = new JSONObject[999];
配列を持っている tmp[newPosition]=tmp[oldPosition];
スワップ
JSONObject jo= tmp[oldPosition];
tmp[oldPosition]=tmp[newPosition];
tmp[newPosition]=jo;
EDIT:あり、他の方法がありますが、あなたの結果を得るためにも、この通過することができます:)
練習:あなたはこのロジックを理解し、JSONObject
タイプを使用して行うことができます>private int array[];
はあなたがint配列を持っているとしましょう、私はそれを行うことが怠惰だすべてを処理、NullPointerExceptions
に気をつけろ
array = new int[]{10,20,30,40,50,60,70,80,90,100};
コールあなたが要素を交換する場合は、この方法で、
swapNumbers(array,9,1);
。
public int[] swapNumbers(int [] arr, int possition1, int possition2){
int temp = arr[possition2];
arr[possition2] = arr[possition1];
arr[possition1] = temp;
System.out.println("array -->" + Arrays.toString(array));
return arr;
}
出す:配列[10、、30、40、50、60、70、80、90、]
しかし、それはあなたを満たしていません?
このようになるように入れて必要[10、、20、30、40、50、60、70、80、90]
、メソッド
resetUpMyArray(array, array[9],1);
System.out.println("array Finally changed-->" + Arrays.toString(array));
下に使用することができるアレイ
はここ
public int[] resetUpMyArray(int[] inputArray, int deleteMeValue,int addMePosition) {
List resultLinkedList = new LinkedList();
for (int itemValue : inputArray)
if (deleteMeValue == itemValue) {
System.out.println("Do not add this value"+itemValue);
} else {
System.out.println("Do add this value "+itemValue +"position-"+deleteMeValue);
resultLinkedList.add(itemValue);
}
System.out.println("array -as new L.L->" + resultLinkedList);
resultLinkedList.add(addMePosition,deleteMeValue);
System.out.println("array -as new L.L all set->" + resultLinkedList);
array = new int[resultLinkedList.size()];
for (int i = 0; i < resultLinkedList.size(); i++) {
array[i] = (int) resultLinkedList.get(i); // Watch out for NullPointerExceptions!
}
return array;
}
は、2つの単純なアルゴリズムです、お楽しみください。
スイッチ値:
switch(array, from, to)
tmp = array[to]
array[to] = array[from]
array[from] = tmp
これは単にインデックスfrom
で開催するインデックスto
で置き換えされる値を格納します
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
|--<---->--|
[10, 20, 60, 40, 50, 30, 70, 80, 90, 100]
のようなものを与えます移動とシフトの値:
これは1つの値を移動し、次に値をシフトします。このため
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
|------------^
[10, 20, , 40, 50, 60, 30, 70, 80, 90, 100]
<-----------
[10, 20, 40, 50, 60, 30, 70, 80, 90, 100]
、溶液が全く同じであり、tmp
の値を格納するが、ギャップを埋めるためにすべての値をシフトします。 from < to
tmp = array[to]
i = from
while(i < to)
array[i] = array[i+1]; --Shift the value
i = i + 1
array[to] = tmp;
使用の一時変数は、現在の値を格納し、一時変数に古い位置の値を動かし、古い位置に新しい位置値を移動し、最終的に新しい位置に一時値を移動する場合は、このコードは動作します。 –
ようこそ、あなたがこの問題について何度か取ってきたことを示すようにしたコードを入力してください。もちろん、類似の質問を最初に検索する必要があります。これは単純なアルゴリズムの問題です。 – AxelH