精华内容
下载资源
问答
  • 在这个页面上,我们将提供Java8转换MapList的方法Collectors.toList()示例。 一个映射有键和值,我们可以将所有键和值作为列表来获取。 如果我们想在一个类属性中设置key和value,然后这个对象添加到List中,...


    在这个页面上,我们将提供Java8转换MapList的方法Collectors.toList()示例。

    一个映射有键和值,我们可以将所有键和值作为列表来获取。

    如果我们想在一个类属性中设置keyvalue,然后把这个对象添加到List中,我们可以用java8的一行代码来实现Collectors.toList().

    现在让我们看看怎么做。

    1.使用Lambda表达式将Map转化成List

    Collectors.toList()方法中使用lambda表达式将Map转换为List,如下示例

    List<String> valueList = map.values().stream().collect(Collectors.toList()); 
    

    如果我们想在放入List之前对值进行排序,我们将按如下方式进行。

    List<String> sortedValueList = map.values().stream()
    			.sorted().collect(Collectors.toList());
    

    我们还可以使用给定的比较器(Comparator.comparing())将Map转换为用户对象List

    List<Person> list = map.entrySet().stream().sorted(Comparator.comparing(e -> e.getKey()))
    		.map(e -> new Person(e.getKey(), e.getValue())).collect(Collectors.toList()); 
    

    这里的Person是一个用户类。我们也可以使用Map.Entry获取Map的键和值如下。

    List<Person> list = map.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getValue))
    		.map(e -> new Person(e.getKey(), e.getValue())).collect(Collectors.toList()); 
    

    作为比较,我们也可以使用Map.Entry.comparingByValue()Map.Entry.comparingByKey()分别根据值和键对数据进行排序。

    List<Person> list = map.entrySet().stream().sorted(Map.Entry.comparingByKey())
    	.map(e -> new Person(e.getKey(), e.getValue())).collect(Collectors.toList()); 
    

    2.简单Map转化成List示例

    SimpleMapToList.java

    package com.concretepage;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.stream.Collectors;
    public class SimpleMapToList {
    	public static void main(String[] args) {
    		Map<Integer, String> map = new HashMap<>();
    		map.put(23, "Mahesh");
    		map.put(10, "Suresh");
    		map.put(26, "Dinesh");
    		map.put(11, "Kamlesh");
    		System.out.println("--Convert Map Values to List--");
    		List<String> valueList = map.values().stream().collect(Collectors.toList());
    		valueList.forEach(n -> System.out.println(n));
    		
    		System.out.println("--Convert Map Values to List using sort--");
    		List<String> sortedValueList = map.values().stream()
    				.sorted().collect(Collectors.toList());
    		sortedValueList.forEach(n -> System.out.println(n));		
    		
    		System.out.println("--Convert Map keys to List--");
    		List<Integer> keyList = map.keySet().stream().collect(Collectors.toList());
    		keyList.forEach(n -> System.out.println(n));
    		
    		System.out.println("--Convert Map keys to List using sort--");
    		List<Integer> sortedKeyList = map.keySet().stream()
    				.sorted().collect(Collectors.toList());
    		sortedKeyList.forEach(n -> System.out.println(n));
    	}
    } 
    

    输出

    --Convert Map Values to List--
    Mahesh
    Suresh
    Dinesh
    Kamlesh
    --Convert Map Values to List using sort--
    Dinesh
    Kamlesh
    Mahesh
    Suresh
    --Convert Map keys to List--
    23
    10
    26
    11
    --Convert Map keys to List using sort--
    10
    11
    23
    26 
    

    3.用户对象Map转化成List示例

    MapToListOfUserObject.java

    package com.concretepage;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.stream.Collectors;
    public class MapToListOfUserObject {
    	public static void main(String[] args) {
    		Map<Integer, String> map = new HashMap<>();
    		map.put(23, "Mahesh");
    		map.put(10, "Suresh");
    		map.put(26, "Dinesh");
    		map.put(11, "Kamlesh");
    		
    		List<Person> list = map.entrySet().stream().sorted(Comparator.comparing(e -> e.getKey()))
    				.map(e -> new Person(e.getKey(), e.getValue())).collect(Collectors.toList());
    		
    		list.forEach(l -> System.out.println("Id: "+ l.getId()+", Name: "+ l.getName()));		
    	}
    } 
    

    Person.java

    package com.concretepage;
    public class Person {
    	private Integer id;
    	private String name;
    	public Person(Integer id, String name) {
    		this.id = id;
    		this.name = name;
    	}
    	public Integer getId() {
    		return id;
    	}
    	public String getName() {
    		return name;
    	}
    } 
    

    输出

    Id: 10, Name: Suresh
    Id: 11, Name: Kamlesh
    Id: 23, Name: Mahesh
    Id: 26, Name: Dinesh 
    

    如果我们需要按键来排序的话,我们可以使用键来排序

    Comparator.comparing(e -> e.getValue())
    

    然后输出如下。

    Id: 26, Name: Dinesh
    Id: 11, Name: Kamlesh
    Id: 23, Name: Mahesh
    Id: 10, Name: Suresh 
    

    参考文献

    【1】Java 8 Convert Map to List using Collectors.toList() Example

    展开全文
  • 如下,也是通过jackson把list转换成的json字符串,我想它转过来,看网上的内容都不尽人如意,都是片断的内容。估计只有写的知道怎么使用,所以就直接看了jackson的官网,知道了使用方法。 用的类主要是 import ...

    有一个字符串如下。如下,也是通过jackson把list转换成的json字符串,我想把它转过来,看网上的内容都不尽人如意,都是片断的内容。估计只有写的知道怎么使用,所以就直接看了jackson的官网,知道了使用方法。

    用的类主要是

    import org.codehaus.jackson.type.TypeReference;
    import org.codehaus.jackson.map.ObjectMapper;

    要转的字符串如下:

    复制代码

    [{"id":"36CD0224C1ED25F5E0538A3B0B7A8190","catgId":null,"matcAmont":50000,"lendPoolId":"36CD0224C1C225F5E0538A3B0B7A8190","balance":50000,"matchFlag":1,"isLock":1,"createTime":1467576000000,"userId":0,"mltCustLendPool":{"id":"36CD0224C1C225F5E0538A3B0B7A8190","userId":157020,"state":1,"isLock":1,"balance":50000,"curTotaAmt":50000,"syncDate":1467561600000,"inviFlag":2,"investTime":1467595065000,"deadline":1499131065000,"billDate":1467681465000,"billDay":5,"productId":"6","productName":"xxx","investAmt":50000,"prodOrderId":38662,"userTelephone":"15922166933","userName":"张三","idcardNum":"1111111111111","projectNum":null,"matchModelCode":null,"creditProduct":{"id":"290AA19B1134838EE053A716C0769130","swldid":"6","prodName":"xxx","prodType":null,"prodRate":0.13,"synFeeRate":null,"payCapitalType":null,"freezeTime":12,"prodCode":6,"prodCatgory":1,"unit":1},"subject":null},"orderFlag":null,"subject":0,"projectNum":null,"matchModeCode":"1"},{"id":"36DA5B50E54E2790E0538A3B0B7A2261","catgId":null,"matcAmont":50000,"lendPoolId":"36CD0224C1C225F5E0538A3B0B7A8190","balance":50000,"matchFlag":1,"isLock":1,"createTime":1467748800000,"userId":0,"mltCustLendPool":{"id":"36CD0224C1C225F5E0538A3B0B7A8190","userId":157020,"state":1,"isLock":1,"balance":50000,"curTotaAmt":50000,"syncDate":1467561600000,"inviFlag":2,"investTime":1467595065000,"deadline":1499131065000,"billDate":1467681465000,"billDay":5,"productId":"6","productName":"xxx","investAmt":50000,"prodOrderId":38662,"userTelephone":"15922166933","userName":"王dd","idcardNum":"2222222222222","projectNum":null,"matchModelCode":null,"creditProduct":{"id":"290AA19B1134838EE053A716C0769130","swldid":"6","prodName":"dfdfd","prodType":null,"prodRate":0.13,"synFeeRate":null,"payCapitalType":null,"freezeTime":12,"prodCode":6,"prodCatgory":1,"unit":1},"subject":null},"orderFlag":null,"subject":0,"projectNum":null,"matchModeCode":"1"}]

    复制代码

    主要代码如下:

    ObjectMapper mapper = new ObjectMapper();
    List<MltWaitLendReco> lendReco = mapper.readValue(listStr,new TypeReference<List<MltWaitLendReco>>(){});
    System.out.println(lendReco.get(0).getId());

    这样就可以把json字符串转换成想要的List.

    注意readValue()方法里的new TypeReference<List<MltWaitLendReco>>() { }写法很关键,你写成List.class是不行的,

    还有一点,ObjectMapper类在com.fasterxml.jackson开头的包里也有,这里用的是org.codehaus.jackson

     这里还有一个以前用的,对象和Json互转的工具类

    复制代码

    import org.codehaus.jackson.JsonGenerationException;
    import org.codehaus.jackson.JsonParseException;
    import org.codehaus.jackson.JsonParser;
    import org.codehaus.jackson.map.DeserializationConfig;
    import org.codehaus.jackson.map.JsonMappingException;
    import org.codehaus.jackson.map.ObjectMapper;
    import org.codehaus.jackson.type.TypeReference;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import java.io.IOException;
    
    
    public class JsonUtils {
    
        /**
         * Logger for this class
         */
        private static final Logger logger = LoggerFactory.getLogger(JsonUtils.class);
    
        private final static ObjectMapper objectMapper = new ObjectMapper();
    
        static {
            objectMapper.configure(JsonParser.Feature.ALLOW_COMMENTS, true);
            objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
            objectMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
            objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
            objectMapper.configure(JsonParser.Feature.INTERN_FIELD_NAMES, true);
            objectMapper.configure(JsonParser.Feature.CANONICALIZE_FIELD_NAMES, true);
            objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        }
    
        public static String encode(Object obj) {
            try {
                return objectMapper.writeValueAsString(obj);
            } catch (JsonGenerationException e) {
                logger.error("encode(Object)", e); //$NON-NLS-1$
            } catch (JsonMappingException e) {
                logger.error("encode(Object)", e); //$NON-NLS-1$
            } catch (IOException e) {
                logger.error("encode(Object)", e); //$NON-NLS-1$
            }
            return null;
        }
    
        /**
         * 将json string反序列化成对象
         *
         * @param json
         * @param valueType
         * @return
         */
        public static <T> T decode(String json, Class<T> valueType) {
            try {
                return objectMapper.readValue(json, valueType);
            } catch (JsonParseException e) {
                logger.error("decode(String, Class<T>)", e);
            } catch (JsonMappingException e) {
                logger.error("decode(String, Class<T>)", e);
            } catch (IOException e) {
                logger.error("decode(String, Class<T>)", e);
            }
            return null;
        }
    
        /**
         * 将json array反序列化为对象
         *
         * @param json
         * @param jsonTypeReference
         * @return
         */
        public static <T> T decode(String json, TypeReference<T> jsonTypeReference) {
            try {
                return (T) objectMapper.readValue(json, jsonTypeReference);
            } catch (JsonParseException e) {
                logger.error("decode(String, JsonTypeReference<T>)", e);
            } catch (JsonMappingException e) {
                logger.error("decode(String, JsonTypeReference<T>)", e);
            } catch (IOException e) {
                logger.error("decode(String, JsonTypeReference<T>)", e);
            }
            return null;
        }
    }

    复制代码

    转载自:https://www.cnblogs.com/dupang/p/5673097.html

     

    展开全文
  • 首先字符串转换成列表 L=str.split(“ ”)//字符串以空格分开,存入L列表中 然后字符型转成数字型(3.0版本以上都支持) L1=list(map(int , L)) 转化后会形成形如([11,22,345,21 ])的数字型列表 ...

    首先把字符串转换成列表
    L=str.split(“ ”)//把字符串以空格分开,存入L列表中

    然后把字符型转成数字型(3.0版本以上都支持)
    L1=list(map(int , L))

    转化后会形成形如([11,22,345,21 ])的数字型列表

    展开全文
  • 如果key没有重复,那么map... * 一个简单的用户集合转换成(名称-用户)的map,所以用户可能有多个 * * @param userInfoList * @return */ public Map<String, List<UserInfo>> getMap(List<UserInfo

    如果key没有重复,那么map的key-value大概是属于一对一的结构,如果key有重复,但是如果这是因为业务数据造成的重复,说明可能key-value就应该是一对多的关系,那么可以参考如下的示例代码:

    /**
     * 一个简单的把用户集合转换成(名称-用户)的map,所以用户可能有多个
     *
     * @param userInfoList
     * @return
     */
    public Map<String, List<UserInfo>> getMap(List<UserInfo> userInfoList) {
        Map<String, List<UserInfo>> map = new HashMap();
        //循环用户集合,如果能在map里找到相同名称的value,那么就往上叠加,否则初始化相应的key-value
        for (UserInfo userInfo : userInfoList) {
            List<UserInfo> list = map.get(userInfo.getUserName());
            if (CollectionUtils.isEmpty(list)) {
                List<UserInfo> list1 = new ArrayList<>();
                list1.add(userInfo);
                map.put(userInfo.getUserName(), list1);
            } else {
                list.add(userInfo);
                map.put(userInfo.getUserName(), list);
            }
        }
        return map;
    }
    

    转换list为map时,key值有重复,有时可能状态不好,反应不过来,思路依旧死磕在key-value是一对一的这个逻辑上,这时候希望这篇博客能提供些思路。

    展开全文
  • //这里需要json字符串转换成list private String pushConfig; private List<Map, Map, String>>> pushConfigList; 这是操作; private List<Map, Map, String>>> initPushConfigList() throws Exception ...
  • PS:11.15看了一下午终于项目...1.json理解:步骤1:就是后台的ListMap等封装数据,利用json.jar包直接转换成json对象,这样复杂类型data就变成了json形式{"int":1,"name":"kava","func":function(){return 3...
  • 我一开始打算采用toString()的方法,但是就我找到的例子这个方法是在xpath之前就html转换成字符串,我就用不了xpath路径找内容的;然后我打算直接更改xpath路径,在后面加上@coords直接内容找出来,虽然输出是...
  • springmybatis

    2015-09-05 06:54:28
    其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细...
  • 疯狂JAVA讲义

    2014-10-17 13:35:01
    另一个构造器里的代码复制、粘贴到这个构造器里不就可以了吗? 143 5.6 类的继承 144 5.6.1 继承的特点 144 5.6.2 重写父类的方法 145 5.6.3 父类实例的super引用 146 学生提问:我们只是创建了一个Ostrich...
  • 深入浅出 - Redux

    2021-01-08 14:31:52
    我们不用关心Reducer和Action是怎么关联在一起的,Store已经帮我们做了这些事。。 详细介绍 这部分主要讲解redux如何在项目中使用。 <h3>Action <p>Action 是一个普通对象。 <p>redux约定 Action 内使用一个...
  • 最新Java面试宝典pdf版

    热门讨论 2011-08-31 11:29:22
    35、如何一段逗号分割的字符串转换成一个数组? 24 36、数组有没有length()这个方法? String有没有length()这个方法? 24 37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; 24 38、try {}里有一个...
  • Java面试宝典-经典

    2015-03-28 21:44:36
    35、如何一段逗号分割的字符串转换成一个数组? 24 36、数组有没有length()这个方法? String有没有length()这个方法? 24 37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; 24 38、try {}里有一个...
  • Java面试宝典2010版

    2011-06-27 09:48:27
    35、如何一段逗号分割的字符串转换成一个数组? 36、数组有没有length()这个方法? String有没有length()这个方法? 37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; 38、try {}里有一个return...
  • Java面试宝典2012版

    2012-12-03 21:57:42
    35、如何一段逗号分割的字符串转换成一个数组? 24 36、数组有没有length()这个方法? String有没有length()这个方法? 24 37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; 24 38、try {}里有...
  • java面试宝典2012

    2012-12-16 20:43:41
    35、如何一段逗号分割的字符串转换成一个数组? 26 36、数组有没有length()这个方法? String有没有length()这个方法? 26 37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; 26 38、try {}里有一个...
  • 35、如何一段逗号分割的字符串转换成一个数组? 24 36、数组有没有length()这个方法? String有没有length()这个方法? 24 37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; 24 38、try {}里有一个...
  • Java面试笔试资料大全

    热门讨论 2011-07-22 14:33:56
    35、如何一段逗号分割的字符串转换成一个数组? 24 36、数组有没有length()这个方法? String有没有length()这个方法? 24 37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; 24 38、try {}里有一个...
  • Java面试宝典2012新版

    2012-06-26 19:20:00
    35、如何一段逗号分割的字符串转换成一个数组? 24 36、数组有没有length()这个方法? String有没有length()这个方法? 24 37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; 24 38、try {}里有一个...
  • JAVA面试宝典2010

    2011-12-20 16:13:24
    35、如何一段逗号分割的字符串转换成一个数组? 24 36、数组有没有length()这个方法? String有没有length()这个方法? 24 37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; 24 38、try {}里有一个...
  • arcgis工具

    2012-10-22 22:37:31
    如果搜索不需要区分大小写,可以使用SQL函数将所有的值都转换成大写或者小写。对于基于文件的数据源,例如shape文件或coverages,既可以使用UPPER函数,也可以使用LOWER函数。 例如下面这个查询将选出那些姓名的...
  • 知道计算机是怎么工作的很重要,你的代码,程序怎么转换成计算机可以懂的语言,CPU的调度原理,内存工作原理等等。 java学习之路 有了上面的基础,终于我们可以开始讲java的学习之路了。 1. 工具 1.1 开发工具 ...
  • 35、如何一段逗号分割的字符串转换成一个数组? 24 36、数组有没有length()这个方法? String有没有length()这个方法? 24 37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; 24 38、try {}里有一个...
  • 4.1.7 有没有有顺序的Map实现类,如果有,他们是怎么保证有序的。 4.1.8 抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么。 4.1.9 继承和聚合的区别在哪。 4.2.0 IO模型有...
  • 首页请求数据之后,根据热门度返回多个数据,将数据存储到list集合中,并且将它转换为JSON格式数据,返回到页面,页面解析数据并且显示。  商场则负责显示所有的商品数据,实现侧边栏点击指定的类别之后,显示对应...
  • 1993年,由于在C++领域的重大贡献,Bjarne获得了ACM该年度的 Grace Murray Hopper大奖并成为ACM院士(立于1947年的ACM协会是历史最悠久、目前世界上最大的教育和科学计算协会,成为ACM院士是个人成就的里程碑)。...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

怎么把map转换成list