思路:遍历获取US暂时保存,然后删除list中的US,最后将US放在首位
问题:遍历的同时进行删除操作是不允许的
解决:
import java.util.ArrayList; import java.util.List; /** * 将已有集合中的某个值放在集合的首位 * 1. 先删除某元素,再在首位添加某元素 * 2. 遍历集合比较出此元素在集合中的位置,将首位的元素与此元素进行交换 */ public class ListExchangeElementMain { /** * @param args */ public static void main(String[] args) { List<String> list = new ArrayList<String>(16); list.add("2"); list.add("3"); list.add("4"); list.add("1"); list.add("5"); // ListSort(list); listSort2(list); } /** * 将 1 放在首位 * 先删除,再添加 * 备注:需要注意 arrayList.remove 方法有重载,若此时删除的是 1 ,Integer 类型,则无法正确匹配 * 是按照数组位置1进行删除,还是删除value值为1的元素 * * 若value是 Integer 类型的数据,则可以遍历集合,找到此元素在集合中的位置,进而将其与首位的元素进行交换 */ public static void ListSort(List<String> list){ if(null != list && list.size() > 0 ){ list.remove("1"); printList(list); list.add(0,"1"); printList(list); } } /** * 将 1 放在首位 * 遍历交换元素位置 * @param list */ public static void listSort2(List<String> list){ if(null != list && list.size() > 0){ for(int index = 0 , length = list.size() ; index < length ; index++){ if("1".equals(list.get(index))){ String temp = list.get(0); list.set(0, list.get(index)); list.set(index, temp); } } printList(list); } } public static void printList(List<String> list){ for(String inte : list){ System.out.print(inte+" "); } } }