目錄
一、List_所有已知實作類
二、定義
三、方法
1、list中添加,獲取,洗掉元素;(add(index,e),get(index),remove(index))
2、list中是否包含某個元素;(并不是equals)(是List中另外一個方法contains,用法與equals大差不離)
3、list中根據索引將元素數值改變(替換);(list.set(index,e))
4、list中查看(判斷)元素的索引;(indexOf(Object o))
5、根據元素索引位置進行的判斷;
6、利用list中索引位置重新生成一個新的list(截取集合);(list.subList(fromindex,toindex))
7、判斷list是否為空;(List.isEmpty())
8、回傳Iterator集合物件;(使用Iterator迭代器方式需要創建物件,且這種迭代器方式多用于遍歷)
9、將集合轉換為字串;List.toString();
四、ending!
一、List_所有已知實作類
-
AbstractList,AbstractSequentialList,ArrayList,AttributeList,CopyOnWriteArrayList,FilteredList,LinkedList,ListBinding,ListExpression,ListProperty,ListPropertyBase,ModifiableObservableListBase,ObservableListBase,ReadOnlyListProperty,ReadOnlyListPropertyBase,ReadOnlyListWrapper,RoleList,RoleUnresolvedList,SimpleListProperty,SortedList,Stack,TransformationList,Vector
我們需要重點掌握:ArrayList 與 LinkedList.
二、定義
List是一種有序集合(也稱為序列 ), 該界面的用戶可以精確控制串列中每個元素的插入位置, 用戶可以通過整數索引(串列中的位置)訪問元素,并搜索串列中的元素,
與集合不同,串列通常允許重復的元素, 更正式地,串列通常允許成對的元素e1和e2 ,使得e1.equals(e2) ,并且如果它們允許空元素,它們通常允許多個空元素, 有人可能希望實作一個禁止重復的串列,當用戶嘗試插入時會拋出運行時例外,但是我們預計這種使用是罕見的,
該List介面放置額外的約定,超過指定Collection界面上的合同iterator , add , remove , equals ,并hashCode方法, 其他繼承方法的宣告也包括在這里以方便,
List介面提供四種位置(索引)訪問串列元素的方法, 串列(如Java陣列)為零, 請注意,這些操作可能與某些實作的索引值(例如LinkedList類)成時執行, 因此,如果呼叫者不知道實作,則通過迭代串列中的元素通常優先于索引,
List介面提供了一個特殊的迭代器,稱為ListIterator ,允許元素插入和替換,以及雙向訪問以及Iterator介面提供的常規操作, 提供了一種方法來獲取從串列中的指定位置開始的串列迭代器,
List介面提供了兩種搜索指定物件的方法, 從性能角度來說,謹慎使用這些方法, 在許多實作中,它們將執行昂貴的線性搜索,
List介面提供了兩種方法來有效地插入和洗掉串列中任意一點上的多個元素,
注意:雖然串列允許將其自身作為元素,但建議您非常小心: equals和hashCode方法在這樣的串列中不再被很好的定義,
某些串列實作對它們可能包含的元素有限制, 例如,一些實作禁止空元素,有些實作對元素的型別有限制, 嘗試添加不合格元素會引發未經檢查的例外,通常為NullPointerException或ClassCastException , 嘗試查詢不合格元素的存在可能會引發例外,或者可能只是回傳false; 一些實作將展現出前者的行為,一些實作將展現出后者, 更一般來說,對于不完成不會導致將不合格元素插入到串列中的不合格元素的操作,可能會在執行選項時拋出例外或成功, 此例外在此介面的規范中標記為“可選”,
三、方法
-
-
voidadd?(int index, E element)將指定的元素插入此串列中的指定位置(可選操作),
booleanadd?(E e)將指定的元素追加到此串列的末尾(可選操作),
booleanaddAll?(int index, Collection<? extends E> c)將指定集合中的所有元素插入到此串列中的指定位置(可選操作),
booleanaddAll?(Collection<? extends E> c)按指定集合的迭代器(可選操作)回傳的順序將指定集合中的所有元素附加到此串列的末尾,
voidclear?()從此串列中洗掉所有元素(可選操作),
booleancontains?(Object o)如果此串列包含指定的元素,則回傳
true,booleancontainsAll?(Collection<?> c)如果此串列包含指定集合的所有元素,則回傳
true,booleanequals?(Object o)將指定的物件與此串列進行比較以獲得相等性,
Eget?(int index)回傳此串列中指定位置的元素,
inthashCode?()回傳此串列的哈希碼值,
intindexOf?(Object o)回傳此串列中指定元素的第一次出現的索引,如果此串列不包含元素,則回傳-1,
booleanisEmpty?()如果此串列不包含元素,則回傳
true,Iterator<E>iterator?()以正確的順序回傳該串列中的元素的迭代器,
intlastIndexOf?(Object o)回傳此串列中指定元素的最后一次出現的索引,如果此串列不包含元素,則回傳-1,
ListIterator<E>listIterator?()回傳串列中的串列迭代器(按適當的順序),
ListIterator<E>listIterator?(int index)從串列中的指定位置開始,回傳串列中的元素(按正確順序)的串列迭代器,
-
-
-
Eremove?(int index)洗掉該串列中指定位置的元素(可選操作),
booleanremove?(Object o)從串列中洗掉指定元素的第一個出現(如果存在)(可選操作),
booleanremoveAll?(Collection<?> c)從此串列中洗掉包含在指定集合中的所有元素(可選操作),
default voidreplaceAll?(UnaryOperator<E> operator)將該串列的每個元素替換為將該運算子應用于該元素的結果,
booleanretainAll?(Collection<?> c)僅保留此串列中包含在指定集合中的元素(可選操作),
Eset?(int index, E element)用指定的元素(可選操作)替換此串列中指定位置的元素,
intsize?()回傳此串列中的元素數,
default voidsort?(Comparator<? super E> c)根據指定的Comparator引發的順序排列此串列,
default Spliterator<E>spliterator?()在此串列中的元素上創建一個Spliterator ,
List<E>subList?(int fromIndex, int toIndex)回傳指定的
fromIndex(含)和toIndex之間的串列部分的視圖,Object[]toArray?()以正確的順序(從第一個到最后一個元素)回傳一個包含此串列中所有元素的陣列,
-
其中有一些方法不常用我就不舉例了,
接下來我們一個一個方法編譯執行看一下:
1、list中添加,獲取,洗掉元素;(add(index,e),get(index),remove(index))
package ListDemo;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
//add(E e)添加指定元素到末尾
list.add("hello");
list.add("world");
list.add("java");
System.out.println(list);
System.out.println("--------------------");
//add(int index,E e)添加元素到指定索引處
list.add(1,"ying");
//remove(int index)洗掉指定索引位置的元素
list.remove(2);
//get(index)獲取指定索引位置的元素
list.get(2);
//增強for回圈
for (String s:list){
System.out.println(s);
}
System.out.println("--------------------");
System.out.println(list);
System.out.println("--------------------");
}
}
//運行結果:
E:\develop\JDK\bin\java.exe "-javaagent:E:\IDEA\IntelliJ IDEA Community Edition
[hello, world, java]
--------------------
hello
ying
java
--------------------
[hello, ying, java]
--------------------
Process finished with exit code 0
2、list中是否包含某個元素;(并不是equals)(是List中另外一個方法contains,用法與equals大差不離)
package ListDemo;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
//add(E e)添加指定元素到末尾
list.add("hello");
list.add("world");
list.add("java");
System.out.println(list);
System.out.println("--------------------");
//add(int index,E e)添加元素到指定索引處
list.add(1,"ying");
//判斷是否存在相同元素,有則回傳true
String name="ying";
if (list.contains(name)){
System.out.println("ying in list");
}else {
System.out.println("ying no in list");
}
}
}
3、list中根據索引將元素數值改變(替換);(list.set(index,e))
package ListDemo;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
//add(E e)添加指定元素到末尾
list.add("hello");
list.add("world");
list.add("java");
System.out.println(list);
System.out.println("--------------------");
//add(int index,E e)添加元素到指定索引處
list.add(1,"ying");
//根據list索引,修改索引對應的集合內相應位置的元素(list.set(int index,e"修改值"))
list.set(0,"small");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
4、list中查看(判斷)元素的索引;(indexOf(Object o))
//根據元素值查看索引值indexOf,
List<Integer> number = new ArrayList<Integer>();
number.add(1);
number.add(2);
number.add(3);
number.add(2);
//回傳元素值等于2的索引.
System.out.println(number.indexOf(2));
//回傳元素值等于2的最后的索引.
System.out.println(number.lastIndexOf(2));
}
//輸出結果
1
3
Process finished with exit code 0
從結果我們可以看出,根據集合中int型別的值2,我們得到的索引1,剛好為我們添加的順序,
5、根據元素索引位置進行的判斷;
List<Integer> number = new ArrayList<Integer>();
number.add(1);
number.add(2);
number.add(3);
number.add(2);
//回傳元素值等于2的索引.
System.out.println(number.indexOf(2));
//回傳元素值等于2的最后的索引.
System.out.println(number.lastIndexOf(2));
//根據元素索引位置進行的判斷
if (number.indexOf(3) == 2) {
System.out.println("元素3在索引2這個位置.");
}
if (number.lastIndexOf(2) == 3) {
System.out.println("最后的元素2在索引3這個位置.");
}
1
3
元素3在索引2這個位置.
最后的元素2在索引3這個位置.
Process finished with exit code 0
6、利用list中索引位置重新生成一個新的list(截取集合);(list.subList(fromindex,toindex))
public class Demo {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
//add(E e)添加指定元素到末尾
list.add("hello");
list.add("world");
list.add("java");
System.out.println(list);
System.out.println("--------------------");
//add(int index,E e)添加元素到指定索引處
list.add(1,"ying");
//利用subList()截取, 然后給list,末尾指標一般會減一取值,
list=list.subList(0,2);
for (String s:list){
System.out.println(s);
}
7、判斷list是否為空;(List.isEmpty())
package ListDemo;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
//add(E e)添加指定元素到末尾
list.add("hello");
list.add("world");
list.add("java");
System.out.println(list);
System.out.println("--------------------");
if (list.isEmpty()){
System.out.println("list集合為空!");
}else {
System.out.println("list集合中存在元素,不為空!");
}
8、回傳Iterator集合物件;(使用Iterator迭代器方式需要創建物件,且這種迭代器方式多用于遍歷)
package ListDemo;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
//add(E e)添加指定元素到末尾
list.add("hello");
list.add("world");
list.add("java");
System.out.println(list);
System.out.println("--------------------");
//迭代器Iterator
Iterator it = list.iterator();
while(it.hasNext()) {
Object o = it.next();
System.out.println(o);
}
9、將集合轉換為字串;List.toString();
List<Integer> number = new ArrayList<Integer>();
number.add(1);
number.add(2);
number.add(3);
number.add(2);
String str = "";
str = number.toString();
System.out.println(str);
//輸出結果
[1, 2, 3, 2]
Process finished with exit code 0
四、ending!
今天的分享就到這里了,謝謝!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/317904.html
標籤:java
