Home  >  Article  >  Java  >  A brief discussion on the difference between Arrays.asList() and ArrayList types

A brief discussion on the difference between Arrays.asList() and ArrayList types

高洛峰
高洛峰Original
2017-02-04 10:06:122070browse

ea444e6a14303e8217bef847d47d859bea444e6a14303e8217bef847d47d859bArrays.asList()

Convert an array Converted into a List object, this method will return an ArrayList type object. This ArrayList class is not the java.util.ArrayList class, but a static internal class of the Arrays class! If you use this object to add, delete, and update the list, an UnsupportedOperationException will be reported.

<pre name="code" class="html">自己测试:<span>   </span>//arrayList
<span>        </span>List list = new ArrayList();
<span>        </span>list.add("yz_b_insert");
<span>        </span>list.add("yz_b_del");
<span>        </span>list.add("yz_b_update");
<span>        </span>list.add("yz_b_see");
<span>        </span>System.out.println(list.contains("yz_b_update")+"=="+list);
<span>        </span>//arrays.asList()
<span>        </span>String dd = "yz_b_insert,yz_b_del,yz_b_update,yz_b_see";
<span>        </span>List list2 = Arrays.asList(dd);
<span>        </span>System.out.println(list2.contains("yz_b_update")+"@@@@@"+list2);

Output result:

<pre name="code" class="html">arraylist:true==[yz_b_insert, yz_b_del, yz_b_update, yz_b_see]
<pre name="code" class="html">arrays.asList():false@@@@@[yz_b_insert,yz_b_del,yz_b_update,yz_b_see]

##If you use ec72fc4597b7e4c89e397c9b9b4ca917contains to determine the existence of a certain string in the collection. Note that the ea444e6a14303e8217bef847d47d859barraylist conversion is not available

I cannot test it , there are experts who can give some advice

The following are the resources found online

<span style="color: rgb(102, 102, 102); font-family: Tahoma;">为什么Arrays.asList产生的List是不可添加或者删除,否则会产生UnsupportedOperationException,就可以得到解释了。 </span><br style="color: rgb(102, 102, 102); font-family: Tahoma;" /><br style="color: rgb(102, 102, 102); font-family: Tahoma;" /><span style="color: rgb(102, 102, 102); font-family: Tahoma;">如果我们想把一个变长或者数据转变成List, 而且期望这个List能够进行add或者remove操作,那该怎么做呢? </span><br style="color: rgb(102, 102, 102); font-family: Tahoma;" /><br style="color: rgb(102, 102, 102); font-family: Tahoma;" /><span style="color: rgb(102, 102, 102); font-family: Tahoma;">我们可以写一个类似的方法,里面直接采用java.util.ArrayList即可。 </span><br style="color: rgb(102, 102, 102); font-family: Tahoma;" /><br style="color: rgb(102, 102, 102); font-family: Tahoma;" /><span style="color: rgb(102, 102, 102); font-family: Tahoma;">比如: </span><br style="color: rgb(102, 102, 102); font-family: Tahoma;" /><pre class="java" name="code" style="color: rgb(102, 102, 102); background-color: rgb(255, 255, 255);">import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class MyArrays {
    public static <T> List<T> asList(T... a) {
        List<T> list = new ArrayList<T>();
        Collections.addAll(list, a);
        return list;
    }
}

The test code is as follows:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Test {
    @SuppressWarnings("unchecked")
    public static void main(String[] args) {
        List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");
        print(stooges);
        List<List<String>> seasonsList = Arrays.asList(retrieveSeasonsList());
        print(seasonsList);
        /*
         * 自己实现一个asList方法,能够添加和删除。
         */
        List<String> list = MyArrays.asList("Larry", "Moe", "Curly");
        list.add("Hello");
        print(list);
    }
    private static <T> void print(List<T> list) {
        System.out.println(list);
    }
    private static List<String> retrieveSeasonsList() {
        List<String> seasonsList = new ArrayList<String>();
        seasonsList.add("Spring");
        seasonsList.add("Summer");
        seasonsList.add("Autumn");
        seasonsList.add("Winter");
        return seasonsList;
    }
}

Output result:

[Larry, Moe, Curly]

[[Spring, Summer, Autumn, Winter]]
[Larry, Moe, Curly , Hello]

The above is the brief discussion about the differences between Arrays.asList() and ArrayList types brought to you by the editor. I hope everyone will support the PHP Chinese website~

More For related articles on the difference between Arrays.asList() and ArrayList types, please pay attention to the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn