原创

Java中map集合转换成list集合,交换第2条数据和第3条数据

初始化5条学员信息(姓名,年龄,性别),使用HashMap集合存储每一条数据每个小map集合有三条语句例如:(“姓名”,name)。再将map集合存储到ArrayList集合中,遍历集合,将学员信息打印到控制台。

交换第2条数据和第3条数据的信息,并再次遍历输出到控制台。

评分标准:

1.创建ArrayList对象,用于存储HashMap对象,正确写入泛型(5分)

2.通过键盘录入5个学员的信息    (10分),

3.将学员信息保存到map集合中,并将map集合保存到ArrayList集合中  (5分)

4.遍历集合打印输出结果(10分)

5.交换第2条数据与第3条数据的信息(10分)

6.再次输出(5分)

7.代码规范 (5分)

初始化5条学员信息(姓名,年龄,性别),使用HashMap集合存储每一条数据每个小map集合有三条语句,通过键盘录入5个学员的信息,代码如下:

/**
 * @return list集合
 */
private static List<Map<String, String>> listData(){
	List<Map<String, String>> list = new ArrayList<>();
	for(int i = 1 ;i <= 5; i++){
		Map<String,String> map = new HashMap<>();
		map.put("姓名","张三"+i);
		map.put("年龄","20");
		map.put("性别","男");
		list.add(map);
	}
	return list;
}

定义第几次输出遍历集合打印输出结果方法,代码如下:

/**
 * @param list 集合
 * @param n 第几次输出
 */
private static void outList(List<Map<String, String>> list,int n){
	System.out.println("\n————————————第 " +n+ " 遍历集合打印输出结果——————————");
	for (Map<String, String> map : list ) {
		for (Map.Entry<String, String> entry : map.entrySet()) {
			System.out.print("(“" + entry.getKey() + "”, " + entry.getValue() + ")");
		}
		System.out.print("\n");
	}
}

调换List集合中两个指定位置的元素,若两个元素位置中间还有其他元素,需要实现中间元素的前移或后移的操作,代码如下:

/**
 * @param list 集合
 * @param oldPosition 需要调换的元素
 * @param newPosition 被调换的元素
 * @param <T>
 */
public static <T> void swap(List<T> list, int oldPosition, int newPosition){
	if(null == list){
		throw new IllegalStateException("The list can not be empty...");
	}
	T tempElement = list.get(oldPosition);

	// 向前移动,前面的元素需要向后移动
	if(oldPosition < newPosition){
		for(int i = oldPosition; i < newPosition; i++){
			list.set(i, list.get(i + 1));
		}
		list.set(newPosition, tempElement);
	}
	// 向后移动,后面的元素需要向前移动
	if(oldPosition > newPosition){
		for(int i = oldPosition; i > newPosition; i--){
			list.set(i, list.get(i - 1));
		}
		list.set(newPosition, tempElement);
	}
}

主函数用于执行方法,代码如下:

public static void main(String[] args) {
	 //初始化5条学员信息(姓名,年龄,性别),使用HashMap集合存储每一条数据每个小map集合有三条语句
	 List<Map<String, String>> list = listData();
	 int n = 1;
	 //遍历集合打印输出结果
	 outList(list,n);
	 //交换第2条数据与第3条数据的信息
	 swap(list,1,2);
	 n++;
	 //再次输出
	 outList(list,n);

}

执行方法控制台输出结果如下:

请输入学员1姓名:
张三
请输入学员1年龄:
20
请输入学员1性别:
男
请输入学员2姓名:
李四
请输入学员2年龄:
21
请输入学员2性别:
女
请输入学员3姓名:
王五
请输入学员3年龄:
24
请输入学员3性别:
男
请输入学员4姓名:
赵柳
请输入学员4年龄:
19
请输入学员4性别:
女
请输入学员5姓名:
李鸿
请输入学员5年龄:
28
请输入学员5性别:
男
————————————第 1 遍历集合打印输出结果——————————
(“姓名”, 张三)(“年龄”, 20)(“性别”, 20)
(“姓名”, 李四)(“年龄”, 21)(“性别”, 21)
(“姓名”, 王五)(“年龄”, 24)(“性别”, 24)
(“姓名”, 赵柳)(“年龄”, 19)(“性别”, 19)
(“姓名”, 李鸿)(“年龄”, 28)(“性别”, 28)
————————————第 2 遍历集合打印输出结果——————————
(“姓名”, 张三)(“年龄”, 20)(“性别”, 20)
(“姓名”, 王五)(“年龄”, 24)(“性别”, 24)
(“姓名”, 李四)(“年龄”, 21)(“性别”, 21)
(“姓名”, 赵柳)(“年龄”, 19)(“性别”, 19)
(“姓名”, 李鸿)(“年龄”, 28)(“性别”, 28)
~阅读全文~人机检测~

关注下方微信公众号“Java精选”(w_z90110),回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。

Java精选专注程序员推送一些Java开发知识,包括基础知识、各大流行框架(Mybatis、Spring、Spring Boot等)、大数据技术(Storm、Hadoop、MapReduce、Spark等)、数据库(Mysql、Oracle、NoSQL等)、算法与数据结构、面试专题、面试技巧经验、职业规划以及优质开源项目等。其中一部分由小编总结整理,另一部分来源于网络上优质资源,希望对大家的学习和工作有所帮助。

评论

分享:

支付宝

微信