欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java之HashMap.values()轉(zhuǎn)List時的錯誤和正確演示

 更新時間:2023年03月22日 09:25:29   作者:Archie_java  
這篇文章主要介紹了Java之HashMap.values()轉(zhuǎn)List時的錯誤和正確演示,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

HashMap.values()轉(zhuǎn)List時的錯誤和正確演示

因為項目中需要獲取到Map的值的集合,所以調(diào)用了HashMap.values()方法轉(zhuǎn)成List,當(dāng)時是使用了以下代碼。

(邏輯上這樣想應(yīng)該沒問題,但生活總是會是不是給你一點小“”驚喜“”)

List<AreaItemOpt> areaItemOpts = (List<AreaItemOpt>) areaItemOptMap.values();
return areaItemOpts;

懷著喜悅的心情在測試環(huán)境中運行之后,它報錯了!

報錯如下:

java.lang.ClassCastException: java.util.HashMap$Values cannot be cast to java.util.List

錯誤原因

于是翻了一下values()方法的源碼

public Collection<V> values() {
      Collection<V> vs = values;
      return (vs != null ? vs : (values = new Values()));
  }

原來values()方法只是返回了一個Collection集合,可是如程序中的用法所示,在向下轉(zhuǎn)型的時候出現(xiàn)了類型轉(zhuǎn)換錯誤。

解決方法

在ArrayList中,有一個構(gòu)造函數(shù)

public ArrayList(Collection<? extends E> c) {
        elementData = c.toArray();
        if ((size = elementData.length) != 0) {
            // c.toArray might (incorrectly) not return Object[] (see 6260652)
            if (elementData.getClass() != Object[].class)
                elementData = Arrays.copyOf(elementData, size, Object[].class);
        } else {
            // replace with empty array.
            this.elementData = EMPTY_ELEMENTDATA;
        }
    }

可以接受一個集合類型的參數(shù),然后返回一個list;這樣就達(dá)到了預(yù)期目的。

代碼如下:

List<AreaItemOpt> areaItemOpts = new ArrayList<>(areaItemOptMap.values());
return areaItemOpts;

測試通過~

發(fā)現(xiàn)還有一種方法也可以解決這個問題:

 List<T> list=(List<T>) Arrays.asList(map.values().toArray());//先轉(zhuǎn)數(shù)組再轉(zhuǎn)list

Map的Value值轉(zhuǎn)換為List集合

不多廢話,直接看代碼,有注解

public class Map轉(zhuǎn)List {
? ? public static void main(String[] args) {
? ? ? ? //開辟空間
? ? ? ? HashMap<Integer,String> hashMap = new HashMap<Integer,String>();
? ? ? ? //存入數(shù)據(jù)
? ? ? ? hashMap.put(1,"張三");
? ? ? ? hashMap.put(2,"李四");
? ? ? ? hashMap.put(3,"王五");
? ? ? ? //使用Collection類型接收HashMap的Value值
? ? ? ? Collection<String> collection = hashMap.values();
? ? ? ? //把Collection對象作為參數(shù)傳入ArrayList構(gòu)造方法完成類型轉(zhuǎn)換
? ? ? ? ArrayList<String> arrayList = new ArrayList<String>(collection);
? ? ? ? //輸出測試
? ? ? ? System.out.println(arrayList.toString());
? ? }
}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java擴(kuò)展Hibernate注解支持java8新時間類型

    java擴(kuò)展Hibernate注解支持java8新時間類型

    這篇文章主要介紹了java擴(kuò)展Hibernate注解支持java8新時間類型,需要的朋友可以參考下
    2014-04-04
  • 簡單的java圖片處理類(圖片水印 圖片縮放)

    簡單的java圖片處理類(圖片水印 圖片縮放)

    本圖片處理類功能非常之強大可以實現(xiàn)幾乎所有WEB開發(fā)中對圖像的處理功能都集成了,包括有縮放圖像、切割圖像、圖像類型轉(zhuǎn)換、彩色轉(zhuǎn)黑白、文字水印、圖片水印等功能
    2013-11-11
  • mybatisplus中EntityWrapper的常用方法

    mybatisplus中EntityWrapper的常用方法

    這篇文章主要介紹了mybatisplus中EntityWrapper的常用方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 解決Mybatis 大數(shù)據(jù)量的批量insert問題

    解決Mybatis 大數(shù)據(jù)量的批量insert問題

    這篇文章主要介紹了解決Mybatis 大數(shù)據(jù)量的批量insert問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Java并發(fā)編程深入理解之Synchronized的使用及底層原理詳解 下

    Java并發(fā)編程深入理解之Synchronized的使用及底層原理詳解 下

    在并發(fā)編程中存在線程安全問題,主要原因有:1.存在共享數(shù)據(jù) 2.多線程共同操作共享數(shù)據(jù)。關(guān)鍵字synchronized可以保證在同一時刻,只有一個線程可以執(zhí)行某個方法或某個代碼塊,同時synchronized可以保證一個線程的變化可見(可見性),即可以代替volatile
    2021-09-09
  • Java中for循環(huán)遍歷刪除操作方法

    Java中for循環(huán)遍歷刪除操作方法

    在Java中,有些場景需要遍歷集合中的元素,然后根據(jù)條件進(jìn)行刪除元素的操作,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • spring @Transactional 無效的解決方案

    spring @Transactional 無效的解決方案

    這篇文章主要介紹了spring @Transactional 無效的解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Java for循環(huán)的妙用之雞兔同籠問題

    Java for循環(huán)的妙用之雞兔同籠問題

    這篇文章主要給大家介紹了關(guān)于Java for循環(huán)的妙用之雞兔同籠問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • springboot如何實現(xiàn)導(dǎo)入其他配置類

    springboot如何實現(xiàn)導(dǎo)入其他配置類

    這篇文章主要介紹了springboot如何實現(xiàn)導(dǎo)入其他配置類問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • SpringCloudConfig之client端報錯Could?not?resolve?placeholder問題

    SpringCloudConfig之client端報錯Could?not?resolve?placeholder問

    這篇文章主要介紹了SpringCloudConfig之client端報錯Could?not?resolve?placeholder?‘from‘?in?value?“${from}“問題及解決方案,具有很好的參考價值,希望對大家有所幫助
    2022-12-12

最新評論