`

将list中某个元素放在首位

阅读更多
需求:程序开发过程中,业务方要求在展示国家列表时要将US放在首位,其余按照字母顺序排序

思路:遍历获取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+" ");
		}
	}
	
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics