接前一節:
ArrayList
boolean |
add(E e)
將指定的元素追加到此列表的末尾。 |
void |
add(int index, E element)
在此列表中的指定位置插入指定的元素。 |
boolean |
addAll(Collection<? extends E> c)
按指定集合的Iterator返回的順序將指定集合中的所有元素追加到此列表的末尾。 |
boolean |
addAll(int index, Collection<? extends E> c)
將指定集合中的所有元素插入到此列表中,從指定的位置開始。 |
void |
clear()
從列表中刪除所有元素。 |
Object |
clone()
返回此 ArrayList實例的淺拷貝。 |
boolean |
contains(Object o)
如果此列表包含指定的元素,則返回 true 。 |
void |
ensureCapacity(int minCapacity)
如果需要,增加此 ArrayList實例的容量,以確保它可以至少保存最小容量參數指定的元素數。 |
void |
forEach(Consumer<? super E> action)
對 |
E |
get(int index)
返回此列表中指定位置的元素。 |
int |
indexOf(Object o)
返回此列表中指定元素的第一次出現的索引,如果此列表不包含元素,則返回-1。 |
boolean |
isEmpty()
如果此列表不包含元素,則返回 true 。 |
Iterator<E> |
iterator()
以正確的順序返回該列表中的元素的迭代器。 |
int |
lastIndexOf(Object o)
返回此列表中指定元素的最後一次出現的索引,如果此列表不包含元素,則返回-1。 |
ListIterator<E> |
listIterator()
返回列表中的列表迭代器(按適當的順序)。 |
ListIterator<E> |
listIterator(int index)
從列表中的指定位置開始,返回列表中的元素(按正確順序)的列表迭代器。 |
E |
remove(int index)
刪除該列表中指定位置的元素。 |
boolean |
remove(Object o)
從列表中刪除指定元素的第一個出現(如果存在)。 |
boolean |
removeAll(Collection<?> c)
從此列表中刪除指定集合中包含的所有元素。 |
boolean |
removeIf(Predicate<? super E> filter)
刪除滿足給定謂詞的此集合的所有元素。 |
protected void |
removeRange(int fromIndex, int toIndex)
從這個列表中刪除所有索引在 |
void |
replaceAll(UnaryOperator<E> operator)
將該列表的每個元素替換爲將該運算符應用於該元素的結果。 |
boolean |
retainAll(Collection<?> c)
僅保留此列表中包含在指定集合中的元素。 |
E |
set(int index, E element)
用指定的元素替換此列表中指定位置的元素。 |
int |
size()
返回此列表中的元素數。 |
void |
sort(Comparator<? super E> c)
使用提供的 |
Spliterator<E> |
spliterator()
在此列表中的元素上創建late-binding和故障快速 |
List<E> |
subList(int fromIndex, int toIndex)
返回此列表中指定的 |
Object[] |
toArray()
以正確的順序(從第一個到最後一個元素)返回一個包含此列表中所有元素的數組。 |
<T> T[] |
toArray(T[] a)
以正確的順序返回一個包含此列表中所有元素的數組(從第一個到最後一個元素); 返回的數組的運行時類型是指定數組的運行時類型。 |
void |
trimToSize()
修改這個 ArrayList實例的容量是列表的當前大小。 |
LinkedList
Modifier and Type | Method and Description |
---|---|
boolean |
add(E e)
將指定的元素追加到此列表的末尾。 |
void |
add(int index, E element)
在此列表中的指定位置插入指定的元素。 |
boolean |
addAll(Collection<? extends E> c)
按照指定集合的迭代器返回的順序將指定集合中的所有元素追加到此列表的末尾。 |
boolean |
addAll(int index, Collection<? extends E> c)
將指定集合中的所有元素插入到此列表中,從指定的位置開始。 |
void |
addFirst(E e)
在該列表開頭插入指定的元素。 |
void |
addLast(E e)
將指定的元素追加到此列表的末尾。 |
void |
clear()
從列表中刪除所有元素。 |
Object |
clone()
返回此 |
boolean |
contains(Object o)
如果此列表包含指定的元素,則返回 |
Iterator<E> |
descendingIterator()
以相反的順序返回此deque中的元素的迭代器。 |
E |
element()
檢索但不刪除此列表的頭(第一個元素)。 |
E |
get(int index)
返回此列表中指定位置的元素。 |
E |
getFirst()
返回此列表中的第一個元素。 |
E |
getLast()
返回此列表中的最後一個元素。 |
int |
indexOf(Object o)
返回此列表中指定元素的第一次出現的索引,如果此列表不包含元素,則返回-1。 |
int |
lastIndexOf(Object o)
返回此列表中指定元素的最後一次出現的索引,如果此列表不包含元素,則返回-1。 |
ListIterator<E> |
listIterator(int index)
從列表中的指定位置開始,返回此列表中元素的列表迭代器(按適當的順序)。 |
boolean |
offer(E e)
將指定的元素添加爲此列表的尾部(最後一個元素)。 |
boolean |
offerFirst(E e)
在此列表的前面插入指定的元素。 |
boolean |
offerLast(E e)
在該列表的末尾插入指定的元素。 |
E |
peek()
檢索但不刪除此列表的頭(第一個元素)。 |
E |
peekFirst()
檢索但不刪除此列表的第一個元素,如果此列表爲空,則返回 |
E |
peekLast()
檢索但不刪除此列表的最後一個元素,如果此列表爲空,則返回 |
E |
poll()
檢索並刪除此列表的頭(第一個元素)。 |
E |
pollFirst()
檢索並刪除此列表的第一個元素,如果此列表爲空,則返回 |
E |
pollLast()
檢索並刪除此列表的最後一個元素,如果此列表爲空,則返回 |
E |
pop()
從此列表表示的堆棧中彈出一個元素。 |
void |
push(E e)
將元素推送到由此列表表示的堆棧上。 |
E |
remove()
檢索並刪除此列表的頭(第一個元素)。 |
E |
remove(int index)
刪除該列表中指定位置的元素。 |
boolean |
remove(Object o)
從列表中刪除指定元素的第一個出現(如果存在)。 |
E |
removeFirst()
從此列表中刪除並返回第一個元素。 |
boolean |
removeFirstOccurrence(Object o)
刪除此列表中指定元素的第一個出現(從頭到尾遍歷列表時)。 |
E |
removeLast()
從此列表中刪除並返回最後一個元素。 |
boolean |
removeLastOccurrence(Object o)
刪除此列表中指定元素的最後一次出現(從頭到尾遍歷列表時)。 |
E |
set(int index, E element)
用指定的元素替換此列表中指定位置的元素。 |
int |
size()
返回此列表中的元素數。 |
Spliterator<E> |
spliterator()
在此列表中的元素上創建late-binding和故障快速 |
Object[] |
toArray()
以正確的順序(從第一個到最後一個元素)返回一個包含此列表中所有元素的數組。 |
<T> T[] |
toArray(T[] a)
以正確的順序返回一個包含此列表中所有元素的數組(從第一個到最後一個元素); 返回的數組的運行時類型是指定數組的運行時類型。 |
代碼示例
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Stream;
import static java.util.stream.Collectors.toList;
public class Mylist {
public static void main(String[] args) {
Mylist mylist = new Mylist();
// mylist.TestArrayList();
mylist.TestLinkList();
}
public void TestArrayList(){
/**
* 初始化
*/
//方式一:內部類
List<String> mylist = new ArrayList<String>(){{
add("z");
add("b");
add("a");
}};
//方式二:
mylist.add("xx");
//方式三:
List<String> jdks = new ArrayList<>(Arrays.asList("1", "2", "3"));
System.out.println(jdks);
//方式四: stream流, jdk8及以後
List<String> colors = Stream.of("blue", "red", "yellow").collect(toList());
System.out.println(colors);
/**
* 遍歷容器,並刪除指定元素
*/
//方式一:
System.out.println("for 增強版訪問:");
for(String str: mylist){
System.out.println(str);
}
//遍歷刪除
CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>(mylist);
for(String x:list){
if("z".equals(x))
{
list.remove(x);
System.out.println("刪除元素:z");
}
}
//方式二:
System.out.println("傳統循環訪問:");
for (int i = mylist.size() - 1; i >= 0; i--)
{
System.out.println(mylist.get(i));
//刪除元素
if (mylist.get(i).equals("a")){
mylist.remove(i);
System.out.println("刪除元素:a, 位置在: " + (i+1));
}
}
//方式三:
System.out.println("使用迭代器訪問:");
ListIterator<String> iter = mylist.listIterator();
while(iter.hasNext()){
String str = iter.next(); //這裏next不能調用兩次,會出錯;調用next之後,next會指向下一個元素
System.out.println(str);
//刪除元素
if ("b".equals(str)){
iter.remove();
System.out.println("刪除元素:b");
}
}
//方式四:
mylist.forEach((i)-> System.out.println(i));
System.out.println("當前list內容:" + mylist +"大小爲:"+ mylist.size());
/**
* 其他函數調用
*/
if (mylist.contains("a")){
System.out.println("list中包含元素:a");
}
// List<String> mylist2 = new ArrayList<>();
//集合先要判斷爲null,在判斷是否爲空
List<String> mylist2 = null;
if (mylist2 == null){
System.out.println("mylist2 = nul");
}
if (mylist2.isEmpty()){ //如果沒有分配內存,會拋出異常
System.out.println("mylist2 is empty");
}
//排序
mylist.sort(Comparator.reverseOrder());
System.out.println(mylist);
//使用stream流對多個字段進行排序
//mylist.stream().sorted(Comparator.comparing(ClassType::getAge).reversed().thenComparing(ClassType::getHeight)).collect(Collectors.toList());
//清除
mylist.clear();
//更多函數請查看:http://www.matools.com/api/java8 網頁搜索:ArrayList
}
/**
* LinkedList 和 ArrayList類似。
*/
public void TestLinkList(){
LinkedList<Integer> mylinklist = new LinkedList<Integer>(){{
add(3);
add(5);
add(2);
add(1);
add(0);
}};
mylinklist.add(19);
System.out.println("元素集合:"+mylinklist);
/**
* LinkedList初始化和遍歷,與ArrayList類似。這裏不在重複
*/
if (mylinklist.peek() == null){
System.out.println("peek():第一個元素爲空");
}
/**
* LinkedList peek和element區別:
* peek(),如果鏈表爲空,則返回null。element(),如果鏈表爲空,則拋異常。
*/
try{
Integer tmp = mylinklist.element();
System.out.println("獲取第一個元素爲:"+tmp);
}catch (Exception e){
e.printStackTrace();
System.out.println("element 沒有獲取第一個元素,拋出異常");
}
/**
* LinkedList對象刪除元素時,不需要擔心被刪除元素之後元素錯亂,因爲是鏈表結構
*/
mylinklist.remove(4); //刪除第四個元素
Integer tmp2 = 19;
mylinklist.remove(tmp2); //刪除對象值爲19的元素
System.out.println(mylinklist);
/**
* 對象排序
*/
mylinklist.sort(Comparator.reverseOrder());
// mylinklist.sort(Comparator.naturalOrder());
System.out.println("排序之後:" + mylinklist);
/**
* 對象清除
*/
mylinklist.clear();
//更多函數請查看:http://www.matools.com/api/java8 網頁搜索:LinkedList
}
}