簡體   English   中英

類型不匹配:無法從地圖轉換 <Object,Map<Object,List<ActorContents> &gt;&gt;到地圖 <Actor ,Map<String,List<ActorContents> &gt;&gt;

[英]Type mismatch: cannot convert from Map<Object,Map<Object,List<ActorContents>>> to Map<Actor ,Map<String,List<ActorContents>>>

我正在嘗試從列表創建嵌套地圖。 使用下面的代碼片段,我得到編譯時錯誤

類型不匹配:無法從Map<Object,Map<Object,List<ActorContents>>>Map<Actor,Map<String,List<ActorContents>>>

 Map<Actor, List<String>> actorTypeOfContents = typeofContentforActor(genres, genreId);

            Map<Actor, Map<String, List<ActorContents>>> imageMap1=                 
                actorContents.stream()
                        .collect(Collectors.groupingBy(e -> e.getActor(), Collectors.groupingBy( p -> Utility.find(actorTypeOfContents.get(p.getActor()), i -> StringUtils.contains(p.getName(), "_" + i + "_"))
                                ))); 

使用的實用方法如下

public static <T> T find(List<T> items, Predicate<T> matchFunction) {
        for (T possibleMatch : items) {
            if (matchFunction.test(possibleMatch)) {
                return possibleMatch;
            }
        }
        return null;
    }

當我如下更改代碼時,沒有錯誤並且代碼執行。

List<String> actorNames =actorTypeOfContents.get(Actor.Genre1);

Map<Actor, Map<String, List<ActorContents>>> imageMap1=                 
                actorContents.stream()
                        .collect(Collectors.groupingBy(e -> e.getActor(), Collectors.groupingBy( p -> Utility.find(actorNames, i -> StringUtils.contains(p.getName(), "_" + i + "_"))
                                ))); 

您能幫忙找出代碼段出什么問題嗎

Map<Actor, Map<String, List<ActorContents>>> imageMap1=                 
                actorContents.stream()
                        .collect(Collectors.groupingBy(e -> e.getActor(), Collectors.groupingBy( p -> Utility.find(actorTypeOfContents.get(p.getActor()), i -> StringUtils.contains(p.getName(), "_" + i + "_"))
                                ))); 

非常感謝您的協助

我們只考慮內部映射Map<Object,List<ActorContents>> ,因為外部映射具有相同的問題。 考慮一下:

Map<Object,List<ActorContents>> map = new HashMap<>();
map.put(1, Arrays.asList(new ActorContents()));
map.put("one", Arrays.asList(new ActorContents()));

現在,您有了一個包含2個不同數據類型鍵的地圖。 您要讓編譯器將其轉換為具有特定鍵類型( Actor )的映射。 編譯器不知道如何將整數或字符串轉換為Actor

我故意沒有引用您的代碼,因為在閱讀我的解釋后,您應該可以自己解決問題。 閱讀泛型教程也對您有好處。

轉換列表<object>映射<div id="text_translate"><p>我有一個包含四個字段的Employee類:id、name、department 和 email。 我創建了五個對象,設置了值並將它們全部添加到列表中。</p><p> 現在,我想將該列表轉換為地圖,但我做不到。 供您參考,這是我嘗試過的代碼</p><pre>Employee emp1 = new Employee("1", "Mayank", "HR", "mayank@gmail.com"); Employee emp2 = new Employee("2", "Mahesh", "Trainer", "Mahesh@gmail.com"); Employee emp3 = new Employee("3", "Vipul", "SEO", "Vipul@gmail.com"); Employee emp4 = new Employee("4", "Ajay", "Devlopwr", "Ajay@gmail.com"); Employee emp5 = new Employee("5", "Rakesh", "Marketing", "Rakesh@gmail.com"); //add class object to list List &lt; Employee &gt; listWmp = new ArrayList &lt; &gt; (); listWmp.add(0, emp1); listWmp.add(1, emp2); listWmp.add(2, emp3); listWmp.add(3, emp4); listWmp.add(4, emp5); System.out.println("list elements are: " + listWmp); //convert the list into map Map &lt; String, Employee &gt; listMap = new HashMap &lt; &gt; (); for (Employee employee: listWmp) { listMap.put(employee.getEmpId(), employee.getEmpBame()); }</pre><p> 如何將列表轉換為地圖?</p></div></object>

[英]convert List<object> to map

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 錯誤:類型不匹配:無法從 Map 轉換<object,list<object> &gt; 至 Map <string,list<> &gt; </string,list<></object,list<object> 類型不匹配:無法從List轉換 <Map<String,Object> &gt;列表 <Object> Java Stream-編譯時錯誤-類型不匹配:無法從Map轉換 <Object,Object> 到地圖 <Integer,List<String> &gt; 黃瓜-類型不匹配:無法從元素類型映射轉換 <Object,Object> 到地圖 <String,String> 轉換列表<Map>列出<Map<String,Object> &gt; 類型不匹配:無法從地圖轉換 <String,List<Animal> &gt;到地圖 <String,List<Dog> &gt; 轉換列表<object>映射<div id="text_translate"><p>我有一個包含四個字段的Employee類:id、name、department 和 email。 我創建了五個對象,設置了值並將它們全部添加到列表中。</p><p> 現在,我想將該列表轉換為地圖,但我做不到。 供您參考,這是我嘗試過的代碼</p><pre>Employee emp1 = new Employee("1", "Mayank", "HR", "mayank@gmail.com"); Employee emp2 = new Employee("2", "Mahesh", "Trainer", "Mahesh@gmail.com"); Employee emp3 = new Employee("3", "Vipul", "SEO", "Vipul@gmail.com"); Employee emp4 = new Employee("4", "Ajay", "Devlopwr", "Ajay@gmail.com"); Employee emp5 = new Employee("5", "Rakesh", "Marketing", "Rakesh@gmail.com"); //add class object to list List &lt; Employee &gt; listWmp = new ArrayList &lt; &gt; (); listWmp.add(0, emp1); listWmp.add(1, emp2); listWmp.add(2, emp3); listWmp.add(3, emp4); listWmp.add(4, emp5); System.out.println("list elements are: " + listWmp); //convert the list into map Map &lt; String, Employee &gt; listMap = new HashMap &lt; &gt; (); for (Employee employee: listWmp) { listMap.put(employee.getEmpId(), employee.getEmpBame()); }</pre><p> 如何將列表轉換為地圖?</p></div></object> 轉換清單 <Map<String, Object> &gt;列出 <String> 轉換地圖 <String, Object> 到地圖 <String, List<Object> &gt; 轉換列表<map<string, comparable<> >> 列表<map<string, object> > </map<string,></map<string,>
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM