国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java集合 之 List 集合

2019-11-15 00:48:05
字體:
來源:轉載
供稿:網友
java集合 之 List 集合

1.什么是Lsit集合?

List集合是一種元素有序的,可重復的集合,集合中每個元素都有自己的元素索引。List集合允許可重復的元素,可以通過索引來訪問指定位置的元素。

2.Java8改進的List接口和ListIterator接口

List作為Collection集合的子接口,可以使用Collection接口的全部方法。另外,由于List是有序集合,又添加了根據索引來操縱List集合的一些方法。

void add(int index, Object element): 將元素element添加到List集合索引index處。

boolean addAll(int index, Collection c): 將Collection集合中的所有元素插入到List集合的index處。

Object get(int index): 返回索引index處的元素。

int indexOf(Object o): 返回元素o在list集合中第一次出現的位置索引。

int lastIndexOf(Object o): 返回元素o在List集合中最后一次出現的位置索引。

Object set(int index, Object element): 將位置索引為index的元素,替換為element。

List subList(int fromIndex, int toIndex): 返回List集合中從索引fromIndex到索引toIndex之間的所有元素。

java8為List集合添加了如下兩個默認方法:

void replaceAll(UnaryOperator operator): 根據operator指定的計算規則來重新設置List集合的所有元素。

void sort(Comparator c):根據Comparator參數對List集合的元素排序。

public class ListTest {    public static void main(String[] args){        List s = new ArrayList();        s.add(new String("春"));        s.add(new String("秋"));        s.add(new String("冬"));        //輸出:[春, 秋, 冬]        System.out.PRintln(s);        s.add(1, new String("夏"));        s.remove(2);        //輸出:[春, 夏, 冬]        System.out.println(s);        //輸出:1        System.out.println(s.indexOf(new String("夏")));        s.set(1, new String("秋"));        //輸出:[春, 秋, 冬]        System.out.println(s);        //輸出:[秋]        //包括fromIndex本身,但不包括toFrom本身        System.out.println(s.subList(1, 2));    }}
public class ListTest0 {    public static void main(String[] args){        List books = new ArrayList();        books.add(new String("輕量級java EE 企業應用開發"));        books.add(new String("瘋狂 java講義"));        books.add(new String("瘋狂Android講義"));        books.add(new String("瘋狂ios講義"));        //使用目標類型為Comparator的Lambda表達式來對List集合排序        books.sort((o1,o2) -> ((String)o1).length() - ((String)o2).length());        //輸出:[瘋狂ios講義, 瘋狂 java講義, 瘋狂Android講義, 輕量級java EE 企業應用開發]        System.out.println(books);        books.replaceAll(ele -> ((String)ele).length());        //輸出:[7, 9, 11, 17]        System.out.println(books);    }}

3.ArrayList和Vector實現類

  ArrayList和Vector類都是基于數組實現的List類,所以ArrayList和Vector類封裝了一個動態的,允許在分配的Object[]數組。ArrayList和Vector對象使用initialCapacity參數來設置數組的長度,當向Arraylist或Vector添加的元素超出數組的長度時,它們的initialCapacity會自動增加

ArrayList和Vector提供了兩個方法來重新分配Object[]數組:

void ensureCapacity(int minCapacity):將ArrayList或Vector集合的Object[]數組長度增加大于或等于minCapacity值。

void trimToSize():調整ArrayList或Vector集合的Objec[]數組長度為當前元素的個數。調用該方法可減少ArrayList或Vector集合對象占用的存儲空間。

  ArrayList和Vecto在用法上幾乎完全相同,但由于Object[]是一個古老的集合(JDK1.0就有了),所以Vector在早些時候提供了很多方法名很長的方法,Vector中方法名很短的方法都是后來新增的。

ArrayList和Vector的顯著區別是:ArrayList是線程不安全的,當多個線程訪問同一個ArrayList集合時,如果有超過一個線程修改了ArrayList集合,則程序必須手動保證該集合的同步性。但Vector是線程安全的,無需保證集合的同步性。因為Vector是線程安全的,所以Vector的性能要比ArrayList集合的性能要低。實際上,即使需要保證List集合的線程安全,也同樣不推薦使用Vector。

4.固定長度的List

有一個操縱數組的工具類Arrays,該工具類提供了asList(Object... a)方法,該方法可以將一個數組或者指定個數的對象轉換為一個List集合,這個List集合既不是ArrayList實現類的實例,也不是Vector的實例類,而是arrays的內部類ArrayList的實例。

   Arrays.ArrayList是一個固定長度的List集合,程序只能遍歷訪問該集合中的元素,不可增加,刪除該集合中的元素。

public class FixedsizeList {    public static void main(String[] args){        List fixedList = Arrays.asList("瘋狂java講義", "瘋狂ios講義");        //獲取fixedList的實現類        //輸出:class java.util.Arrays$ArrayList        System.out.println(fixedList.getClass());        //輸出:瘋狂java講義        //    瘋狂ios講義        fixedList.forEach(System.out::println);        //試圖添加,刪除元素會引發UnsupportedOperationException異常        //fixedList.add("瘋狂Android講義");    }}


上一篇:Servlet開發

下一篇:通過地址定位坐標

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 拉孜县| 鹤峰县| 大英县| 邛崃市| 阿瓦提县| 财经| 屯昌县| 灵川县| 本溪市| 泰兴市| 和田县| 正定县| 冀州市| 拜泉县| 晴隆县| 永川市| 全南县| 天镇县| 临高县| 龙南县| 佛坪县| 澄迈县| 雷波县| 武汉市| 资中县| 久治县| 财经| 涞水县| 江山市| 信阳市| 沂源县| 海宁市| 土默特左旗| 富平县| 祁阳县| 藁城市| 萝北县| 上蔡县| 阳东县| 黄梅县| 沂南县|