Java中的List集合初始化及常見方法解析
1.ArrayList集合的初始化

- 方法 1:使用Arrays.asList進(jìn)行初始化(add,remove,可能會報錯)
- 方法 2:初始化ArrayList的匿名內(nèi)部類方法
- 方法 3:ArrayList初始化的正常方式(推薦使用)
- 方法4:使用Collections.nocopies
@Test
public void testDefined(){{
//1 方法 1:使用Arrays.asList進(jìn)行初始化
List<Integer> integers = Arrays.asList(1, 3, 4, 5, 6);
//2 方法 2:初始化ArrayList的匿名內(nèi)部類方法
List<Integer> integers1 = new ArrayList<Integer>() {{
add(1);
add(2);
add(3);
}};
//3 方法 3:ArrayList初始化的正常方式
ArrayList<Integer> integers2 = new ArrayList<>();
//4 方法4:使用Collections.nCopies
ArrayList<Integer> integers3 = new ArrayList<>(Collections.nCopies(5, 3));
integers3.forEach(System.out::println); //33333 5個3
}}2.常用的List集合方法
1.添加元素方法
1.add(E e):添加元素在列表的末尾
2.add(int index, E e):添加元素在列表的指定位置,指定位置的元素依次后退一位
3.addAll(Collection<? extends E> c):
4.addAll(int index, Collection<? extends E> c):
//添加元素,無索引
@Test
public void testAdd(){
List<Integer> integers = new ArrayList<>();
//1.add(E e):添加元素在列表的末尾
integers.add(1);
integers.add(2);
integers.add(3);//結(jié)果 123
//2.add(int index, E e):添加元素在列表的指定位置,指定位置的元素依次后退一位
integers.add(1, 5); //結(jié)果:1523
integers.forEach(System.out::print);
List<Integer> integers1 = new ArrayList<>();
//3.addAll(Collection<? extends E> c):
integers1.addAll(integers);
integers1.forEach(System.out::print);//結(jié)果:1523
//4.addAll(int index, Collection<? extends E> c):
integers.addAll(1,integers1);
integers.forEach(System.out::print); //1 1523 523
}2.查看(遍歷元素)
1.for循環(huán)
2.增強(qiáng)for循環(huán)
3.迭代器iterator()
4.Collections.enumeration(集合):
5.java8:lambda表達(dá)式輸出
//遍歷list集合
@Test
public void testGet(){
List<Integer> integers = new ArrayList<>();
//1.add(E e):添加元素在列表的末尾
integers.add(1);
integers.add(2);
integers.add(3);//結(jié)果 123
//1.for循環(huán)
for (int i = 0; i < integers.size(); i++){
System.out.println(integers.get(i)); //123
}
//2.增強(qiáng)for循環(huán)
for (Integer integer : integers) {
System.out.println(integer); //123
}
//3.迭代器iterator()
Iterator<Integer> iterator = integers.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
//4.Collections.enumeration(集合)
Enumeration<Integer> enumeration = Collections.enumeration(integers);
while (enumeration.hasMoreElements()) {
System.out.println("enumeration: " + enumeration.nextElement());
//結(jié)果
//enumeration: 1
//enumeration: 2
//enumeration: 3
}
//5.java8:lambda表達(dá)式輸出
integers.forEach(System.out::println);
}3.修改元素
- set(int index, E e)
@Test
public void testListSet(){
List<Integer> integers = new ArrayList<>();
integers.add(1);
integers.add(2);
integers.add(3);
integers.forEach(System.out::println); //1 2 3
integers.set(1, 100);
integers.forEach(System.out::println); // 1 100 3
}4.刪除元素
1.remove(int index)
2.remove(Object o)
3.remove(Collection<? extends E> c)
4.removeRange(int 頭索引, int 尾索引)
@Test
public void testRemove(){
List<Integer> ints= Arrays.asList(1,3,2,4,11,3,6,78,45);
System.out.println(ints.size());
Integer remove = ints.remove(4); //報錯
System.out.println(remove);
ints.remove("5");
List<String> strs= Arrays.asList("1","2","5");
strs.remove("5");
System.out.println(ints.size());
}
報java.lang.UnsupportedOperationException
@Test
public void testRemove(){
List<Integer> ints = new ArrayList<>();
System.out.println(ints.size()); //0
ints.add(1);
ints.add(12);
ints.add(13);
ints.add(16);
ints.add(16);
ints.add(17);
ints.add(10);
System.out.println(ints.size()); // 7
Integer remove = ints.remove(4);
System.out.println(remove);
System.out.println(ints.size()); // 6
}
可以成功運行并刪除,調(diào)用Arrays.asList()生產(chǎn)的List的add、remove方法時報UnsupportedOperationException異常,這是由Arrays.asList() 返回的是Arrays的內(nèi)部類ArrayList, 而不是java.util.ArrayList。Arrays的內(nèi)部類ArrayList java.util.ArrayList都是繼承AbstractList,remove、add等方法AbstractList中是默認(rèn)throw UnsupportedOperationException而且不作任何操作。java.util.ArrayList重寫了這些方法而Arrays的內(nèi)部類ArrayList沒有重寫,所以會拋出異常。
使用java.util.ArrayList 數(shù)組即可
5.其他的常見方法
1.size():返回此列表中的長度。
2.Collections.sort(Collection<? extends E> c):集合升序排序
3.Collections.sort(list) ---> Collections.reverse(list) : 集合降序排序
或者:Collections.sort(list,Collections.reverseOrder());
4.public List<E> subList(int fromIndex, int toIndex): 獲取現(xiàn)有l(wèi)ist子列表
5.public int lastIndexOf(Object o):返回此列表中指定元素的最后一次出現(xiàn)的索引,如果此列表不包含元素,則返回-1。
6. public E get(int index):返回此列表中指定位置的元素。
7. public int indexOf(Object o):返回此列表中指定元素的第一次出現(xiàn)的索引,如果此列表不包含元素,則返回-1。
8.public boolean contains(Object o):可以用來比較兩個ArrayList集合中的元素是否一致
業(yè)務(wù)需求:判斷對象更新之后,修改前后的值是否改變
9.Collections.swap(List, int index1, int index2):交換同集合中index1位置與index2位置的元素
10.public Object[] toArray():以正確的順序(從第一個到最后一個元素)返回一個包含此列表中所有元素的數(shù)組。此數(shù)組是全新的,意思就是和之前的ArrayList不是指向一個引用,調(diào)用者可以自由地修改返回的數(shù)組
11.public void ensureCapacity(int minCapacity):增加數(shù)組的容量
@Test
public void testSort(){
List<Integer> ints= Arrays.asList(1,3,2,4,11,3,6,78,45);
//1.size():返回此列表中的長度。
System.out.println(ints.size()); // 9
ints.forEach(System.out::println); //1 3 2 4 11 3 6 78 45
//2.Collections.sort(Collection<? extends E> c):集合升序排序
Collections.sort(ints);
ints.forEach(System.out::println); //1 2 3 3 4 6 11 45 78
//3.Collections.reverse(list) : 集合降序排序
Collections.reverse(ints);
ints.forEach(System.out::println); //78 45 11 6 4 3 3 2 1
//比較器Collections.reverseOrder()
Collections.sort(integers1, Collections.reverseOrder());
integers1.forEach(System.out::println); //78 45 11 6 4 3 3 2 1
}對象排序:對象實體必須實現(xiàn)Comparable()接口,需重寫其中的compareTo()方法,否則報錯
到此這篇關(guān)于Java中的List集合初始化及常見方法解析的文章就介紹到這了,更多相關(guān)List集合初始化及常見方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 根據(jù)某個 key 加鎖的實現(xiàn)方式
日常開發(fā)中,有時候需要根據(jù)某個 key 加鎖,確保多線程情況下,對該 key 的加鎖和解鎖之間的代碼串行執(zhí)行,這篇文章主要介紹了Java 根據(jù)某個 key 加鎖的實現(xiàn)方式,需要的朋友可以參考下2023-03-03
SSM框架使用poi導(dǎo)入導(dǎo)出Excel的詳細(xì)方法
這篇文章主要介紹了SSM框架使用poi導(dǎo)入導(dǎo)出Excel,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
Spring Boot Maven Plugin打包異常解決方案
這篇文章主要介紹了Spring Boot Maven Plugin打包異常解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11
Java并發(fā)工具之CountDownLatch使用詳解
這篇文章主要介紹了Java并發(fā)工具之CountDownLatch使用詳解,通過使用 CountDownLatch可以使當(dāng)前線程阻塞,等待其他線程完成給定任務(wù),可以類比旅游團(tuán)導(dǎo)游要等待所有的游客到齊后才能去下一個景點,需要的朋友可以參考下2023-12-12
Java try()語句實現(xiàn)try-with-resources異常管理機(jī)制操作
這篇文章主要介紹了Java try()語句實現(xiàn)try-with-resources異常管理機(jī)制操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
Java中字符數(shù)組和字符串與StringBuilder和字符串轉(zhuǎn)換的講解
今天小編就為大家分享一篇關(guān)于Java中字符數(shù)組和字符串與StringBuilder和字符串轉(zhuǎn)換的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03

