標籤:string slist int 定義 number target proc asm sso
有規律的String字串位置移動
1.自訂一個有規律的String字串
String numstr = "1,2,3,x,y,4,5";
2.按逗號拆分numstr字串
String[] nums = numstr.split(",");
3.將nums數組轉為list
List<String> numlist = Arrays.asList(nums);
4.擷取list中x的下標 此處index為:3
int index = numlist.indexOf("x");
5.將x向後移動一位
Collections.rotate(numlist.subList(index, index+1+1), -1);
6.將list轉為String字串 此處輸出numstr為:1,2,3,y,x,4,5
numstr = String.join(",", numlist);
7.rotate方法的使用
Rotate
方法需要一個參數distance
,該方法將一個List
旋轉多少長度為distance
。假如有個序列列list
是[a,b,c,d]
,調用方法Collections.rotate(list, 1)
後,得到的list
就變為了[d,a,b,c]
。
調用此方法後,位置i
上的元素將變為位置(i - distance) mod list.size()
的元素,0 <= i < list.size()
。distance
可以為正數、0、負數。正數代表向前(下標值變大的方向)旋轉,負數代表向後旋轉。調用方法Collections.rotate(list, -1)
後,得到的list
就變為了[b,c,d,a]
。
這個方法常常和List
的subList
方法結合使用,用於將一個list
的某個或多個元素進行移動,而不破壞其餘元素的順序。例如為了將某個list
的位置j
的元素向前移動到k
的位置。(設移動的距離為d
(d >= 0
),k = j + d + 1
)。
Collections.rotate(list.subList(j, k+1), -1);
舉個栗子,例如[a,b,c,d,e]
,將b
元素向前移動三個位置
Collections.rotate(list.subList(1, 5), -1);
調用後得到list
為[a,c,d,e,b]
。
8.rotate詳解
52891183
String字串位置移動