将Map中的key和values转化为List

在项目开发中,常常会用到Map,而map的存放是无序的,它存放的是键值对,也就是一个键对应一个值。有时需要将Map的key和value转化为List来进行相关的操作,现在通过实例来实现Map的key和value的转化。

代码如下:

package com.example;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class JavaTest {
	public static void main(String[] args) {

		Map<String, String> myMap = new HashMap<String, String>();
		myMap.put("a", "张三");
		myMap.put("b", "李四");
		myMap.put("c", "王五");
		myMap.put("d", "小六");

		Set<String> set = getKeySetByMap(myMap);

		List<String> keyListBySet = getKeyListBySet(set);

		List<String> keyList = getListByMap(myMap, true);
		List<String> valuesList = getListByMap(myMap, false);

		Iterator<String> it = set.iterator();

		while (it.hasNext()) {
			String key = it.next().toString();
			System.out.println("set:" + key);
		}
		for (int i = 0; i < keyListBySet.size(); i++) {

			System.out.println("keyListBySet:" + i + "->" + keyListBySet.get(i)
					+ ";key:" + keyList.get(i) + ";values:"
					+ valuesList.get(i));

		}

	}

	/**
	 * 根据map获取map包含的key,返回set
	 *
	 * @param map
	 * @return
	 */
	public static Set<String> getKeySetByMap(Map<String, String> map) {

		Set<String> keySet = new HashSet<String>();
		keySet.addAll(map.keySet());

		return keySet;
	}

	/**
	 * 根据key的set返回key的list
	 *
	 * @param set
	 * @return
	 */
	public static List<String> getKeyListBySet(Set<String> set) {
		List<String> keyList = new ArrayList<String>();
		keyList.addAll(set);
		return keyList;
	}

	/**
	 * 根据map返回key和value的list
	 *
	 * @param map
	 * @param isKey
	 *            true为key,false为value
	 * @return
	 */
	public static List<String> getListByMap(Map<String, String> map,
			boolean isKey) {
		List<String> list = new ArrayList<String>();

		Iterator<String> it = map.keySet().iterator();
		while (it.hasNext()) {
			String key = it.next().toString();
			if (isKey) {
				list.add(key);
			} else {
				list.add(map.get(key));
			}
		}

		return list;
	}

}

输出结果如下:

set:d
set:b
set:c
set:a
keyListBySet:0->d;key:d;values:小六
keyListBySet:1->b;key:b;values:李四
keyListBySet:2->c;key:c;values:王五
keyListBySet:3->a;key:a;values:张三
时间: 2024-10-12 21:54:24

将Map中的key和values转化为List的相关文章

在map中一个key中存多个值

一说到map都想到key-value键值队存在.key可以为最多一个null的key. 今天开发中一个业务需求,在map中一个key中存多个对象. 我首先想到Map<String,List>造型来解决.尤其是那种一对多的可以这么设计. Map<String,List> map = new HashMap<String,List>();//模型就是这么个. for(int i=0;i<listObj.size();i++){ key = listObj.getId(

获取map中根据key进行排序的value数据

今天做的项目中遇到了获取map中根据key进行排序的value数据,key中保存的内容是字符串类型.      map的知识点好久没用有点生疏,不知道怎么去使用.看看之前同事写的map根据key排序的代码,发现他是先把key都取出来封装到一个List中,然后用Collections.sort方法对List排序,按照排完序的顺序去除value顺序加入到一个新的List中.感觉此种方式的循环次数太多,于是上网找找能不能直接排序的方法,看见有人写直接保存到TreeMap中的数据就能实现按照进行排序的功

【基础】结构体重载,用 char*作为std::map中的key

结构体重载 C++中,结构体是无法进行==,>,<,>=,<=,!=这些操作的,这也带来了很多不方便的地方,尤其是在使用STL容器的时候,如果我们可以往语句中传入结构体,一些事情将会变得很简单. bool operator 运算符 (const 结构体名称 b) const { return(什么时候这个运算符对结构体成立);//注意对此运算符使用this->元素名: } 用 char*作为std::map中的key 首先为什么要用 char*作为std::map中的key

Golang对map中的key进行排序

package main import ( "fmt" "sort" ) func main() { //首先生成26个字母充当map中的key var a = 'a' var m map[string]int = make(map[string]int) for i := 0; i < 26; i++ { // fmt.Printf("%c", a) //%c 是输出字符 key := fmt.Sprintf("%c"

随机获取一个集合(List, Set)中的元素,随机获取一个Map中的key或value

利用Java提供的Random类.从List或Set中随机取出一个元素,从Map中随机获取一个key或value. 因为Set没有提供get(int index)方法,仅仅能先获取一个随机数后.利用一个计数器,对Set进行循环,当计数器等于随机数时返回当前元素,对于Map的处理也类似. 不知有没有更好的方法-- package com.xjj.util; import java.util.List; import java.util.Map; import java.util.Set; impo

再谈序列化之rpc调用失败和jackson序列化时不允许Map中的key为null

最近遇到了两个序列化相关的问题,比较典型,备忘特此留笔. 1.rpc调用时未进行序列化而导致的rpc调用失败 使用dubbo框架在进行rpc调用的时候,出现了下面的问题,原因是因为接口参数中的NoSerialReqDto类没有实现Serializable接口,没有进行序列化导致的. Caused by: java.lang.IllegalStateException: Serialized class com.your.package.domain.NoSerialReqDto must imp

golang中的slice翻转存在以及map中的key判断

//slice翻转 func stringReverse(src []string){ if src == nil { panic(fmt.Errorf("the src can't be empty!")) } count := len(src) mid := count/2 for i := 0;i < mid; i++{ tmp := src[i] src[i] = src[count-1] src[count-1] = tmp count-- } } //判断是否包含 f

MyBatis动态SQL使用,传入参数Map中的Key判断

<select id="" parameterType="Map" resultMap="commodityResultMap" > SELECT c.id c_id,c.variety_id,c.nickName c_nickName,c.description c_description,c.ordinaryPrice c_ordinaryPrice,c.memberPrice c_memberPrice,c.path c_pat

对list中map中的key值进行排序

//对时间戳进行排序 获取最新的mapList<Map<String, Object>> dateList = new ArrayList<Map<String, Object>>(); Map<String, Object> paramsValue = new HashMap<String, Object>(); paramsValue.put("userId", user.getId()); List<S