作者:欧阳方超。
swap()方法,顾名思义就是用来交换元素位置的方法,怎么个交换法呢,它可以对指定列表的两个元素进行交换,这两个元素是用索引号进行指定的。用下面的代码简单说明一下(以下代码只给出了main方法):
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
System.out.println("第一、二号元素交换位置之前:");
list.forEach((tempStr) -> {
System.out.println(tempStr);
});
Collections.swap(list, 1, 2);
System.out.println("第一、二号元素交换位置之后:");
list.forEach(System.out::println);
}
程序运行结果:
第一、二号元素交换位置之前:
1
2
3
第一、二号元素交换位置之后:
1
3
2
非常简单明了,但是我却把它用错了地方。具体来说,是这样的,某天开发时遇到了这样一个场景,我把某些对象放到List中了,其中有一个对象不能参与排序,而且需要置顶,起初我的实现过程是这样的,先对List进行排序,然后再以一定特征遍历List,当遇到那个不需要参与排序而且要指定的元素时,记录下该元素的索引号(currentIndex),然后再把它与索引号为0的元素进行交换,这样写完后代码都提了,转念一想显然是不对的,本意是想把需要置顶的元素进行置顶操作,而其他所有已经排序好的元素依次往后排列。既然写到这了,那也记录下我是如何改正的吧,先不对List进行排序,找到需要置顶的对象并赋给一个变量,再在List中移除掉该元素,然后对剩下的对象进行排序,最后把需要置顶的对象放到List的头部即可,当然,可以有其他更好的方法实现该逻辑,欢迎朋友们讨论。