有规律的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详解