您好,登錄后才能下訂單哦!
這篇文章主要介紹了Java中List接口怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
List接口繼承collection接口,此接口可以對列表中的每個元素精確的控制,可以根據(jù)元素的索引來獲取列表中的值,下面介紹常用的幾種,ArrayList,LinkedList。
ArrayList是一個動態(tài)修改的數(shù)組,它沒有固定的大小,不需要自己分配空間,java本身已經(jīng)初始化容量為10的大小,可以直接添加刪除等一系列操作。
ArrayList構(gòu)造方法:
ArrayList() ;構(gòu)造一個初始化容量為10的空列表。
ArrayList(Collection c) ; 構(gòu)造一個包含指定 collection 的元素的列表,這些元素是按照該 collection 的迭代器返回它們的順序排列的。
ArrayList(int initialCapacity) ;構(gòu)造一個指定初始容量的空列表。
常用方法:
方法名 | 說明 |
---|---|
boolean add(E e) | 將指定元素添加到列表尾部 |
void add(int index, E element) | 將指定元素添加到列表中指定位置 |
void clear() | 刪除此列表中的所有元素 |
Object clone() | 返回ArrayList副本 |
boolean contains(Object o) | 如果列表中包含指定元素則返回true,否則false |
E get(int index) | 返回列表中指定索引位置上的元素 |
int indexOf(Object o) | 返回列表中首次出現(xiàn)的指定元素的索引,如果沒有則返回-1 |
int lastIndexOf(Object o) | 返回此列表中最后一次出現(xiàn)的指定元素的索引,沒有則返回-1 |
E remove(int index) | 刪除指定索引上的元素,并返回刪除值 |
boolean remove(Object o) | 移除列表中首次出現(xiàn)的元素 |
E set(int index, E element) | 將此列表中的索引位置的元素?fù)Q成指定的元素 |
int size() | 返回此列表中的元素個數(shù) |
Object[] toArray() | 將此列表所有元素?fù)Q成數(shù)組 |
boolean isEmpty() | 如果此列表為空則返回true |
List subList(int fromlndex, int tolndex) | 將此列表中從fromindex到toindex的元素組成新的集合返回 |
示例
import java.util.ArrayList; public class dome2{ public static void main(String[] args){ ArrayList list=new ArrayList(); list.add("nihoa"); //添加字符串 list.add(12); //添加數(shù)字 list.add('a'); //添加字符 list.add("hello"); list.set(1,"java"); //將索引為1的換成字符串 System.out.println("索引為2的值是:"+list.get(2)); System.out.println("刪除索引為0的值是:"+list.remove(0)); System.out.println("列表中還有"+list.size()+"個元素"); System.out.println("判斷列表是不是為空: "+list.isEmpty()); for (Object object : list) { //循序打印 System.out.print(object+" "); } } }
結(jié)果
索引為2的值是:a
刪除索引為0的值是:nihoa
列表中還有3個元素
判斷列表是不是為空: false
java a hello
例1:
創(chuàng)建一個商品類,指定商品的編號,名稱,價格,封裝它們。
class Goods{ private int id; //編號 private String name; //名稱 private float price; //價格 public Goods() { } public Goods(int id, String name, float price) { super(); this.id = id; this.name = name; this.price = price; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } @Override public String toString() { //格式輸出 return "商品編號: "+id+", 名稱: "+", 價格: "+","; } }
創(chuàng)建一個測試類,填寫商品的價格,編號,名稱并保存到列表中,通過ArrayList類的方法修改和獲取值。
import java.util.ArrayList; public class dome2{ public static void main(String[] args){ ArrayList<Goods> list=new ArrayList<Goods>(); list.add(new Goods(1,"保溫杯",22.0f)); list.add(new Goods(2,"洗發(fā)水",21.3f)); list.add(new Goods(3,"筆記本",5.0f)); Goods g=new Goods(5,"熱水壺",59.0f); list.add(g); list.add(new Goods(4,"菜刀",31.4f)); //1.遍歷所有商品 for(int i=0;i<list.size();i++) { System.out.println(list.get(i).toString()); } //2.獲取指定商品的信息 System.out.println("查找編號為3,名稱為熱水壺,價格為59元的元素索引"+list.indexOf(g)); System.out.println("熱水壺的價格是 "+list.get(3).getPrice()+" 元"); System.out.println("洗發(fā)水的編號是 "+list.get(1).getId()); System.out.println("將菜刀的價格設(shè)為120元 "); list.get(list.size()-1).setPrice(120.0f); //3.遍歷所有商品 for(int i=0;i<list.size();i++) { System.out.println(list.get(i).toString()); } } }
結(jié)果
商品編號: 1 名稱: 保溫杯 價格: 22.0
商品編號: 2 名稱: 洗發(fā)水 價格: 21.3
商品編號: 3 名稱: 筆記本 價格: 5.0
商品編號: 5 名稱: 熱水壺 價格: 59.0
商品編號: 4 名稱: 菜刀 價格: 31.4
查找編號為3,名稱為熱水壺,價格為59元的元素索引3
熱水壺的價格是 59.0 元
洗發(fā)水的編號是 2
將菜刀的價格設(shè)為120元
商品編號: 1 名稱: 保溫杯 價格: 22.0
商品編號: 2 名稱: 洗發(fā)水 價格: 21.3
商品編號: 3 名稱: 筆記本 價格: 5.0
商品編號: 5 名稱: 熱水壺 價格: 59.0
商品編號: 4 名稱: 菜刀 價格: 120.0
Iterator迭代器遍歷:
Iterator接口是Collection接口的超級接口,通過Collection接口下的iterator方法返回iterator。
Iterator方法:
方法名 | 說明 |
---|---|
boolean hasNext() | 如果有元素仍可以迭代,就返回true |
E next() | 返回迭代的下一個元素 |
void remove() | 移除迭代器返回的最后一個元素 |
public class dome2{ public static void main(String[] args){ ArrayList list=new ArrayList(); list.add("hello "); list.add("world!,"); list.add("hello "); list.add("java!"); Iterator it=list.iterator(); while(it.hasNext()) { //判斷是否還有下一個元素 System.out.print(it.next()); //輸出下一個元素 } } }
LinkedList類采用鏈表結(jié)構(gòu)保存對象,鏈表采用節(jié)點(diǎn)之間的指向,上一個節(jié)點(diǎn)指向下一個節(jié)點(diǎn),并且可以在中間插入,不需要數(shù)組還需要重新排列,所以在頻繁的插入元素和刪除元素這方面,LinkedList類要比ArrayList類要快,效率更高。但在訪問元素速度方面卻相對落后。
構(gòu)造方法
LinkedList() ;構(gòu)造一個空列表
LinkedList(Collection c) ;構(gòu)造一個包含指定 collection 中的元素的列表
常用方法:
方法名 | 說明 |
---|---|
boolean add(E e) | 將指定元素添加到元素列表的結(jié)尾 |
void add(int index, E element) | 在列表中指定的位置插入指定的元素 |
void addFirst(E e) | 將指定元素插入到此列表的開頭 |
void addLast(E e) | 將指定的元素添加到此列表的結(jié)尾 |
boolean contains(Object o) | 如果列表中有指定元素返回true,否則false |
E element() | 獲取但不移除此列表的第一個元素 |
E get(int index) | 返回此列表中指定的元素 |
E getFirst() | 返回此列表的第一個元素 |
E getLast() | 返回此列表的最后一個元素 |
int indexOf(Object o) | 返回此列表首次出現(xiàn)的指定元素的索引,沒有返回-1 |
int lastIndexOf(Object o) | 返回此列表最后出現(xiàn)的指定元素的索引,沒有返回-1 |
E set(int index, E element) | 將列表中指定位置的元素替換 |
E removeFirst() | 移除并返回此列表中的第一個元素 |
E removeLast() | 移除并返回此列表的最后一個元素 |
示例:
public class dome2{ public static void main(String[] args){ LinkedList list=new LinkedList(); list.add("電風(fēng)扇"); list.add("吹風(fēng)機(jī)"); list.add("香皂"); list.add("肥皂"); list.add("洗發(fā)水"); System.out.println("獲取的第一個商品是: "+list.getFirst()); System.out.println("獲取的最后一個商品是: "+list.getLast()); System.out.println("刪除的第一個元素是: "+list.removeFirst()); System.out.println("將索引為3的元素修改成: "+list.set(3,"牛角梳")); for(int i=0;i<list.size();i++) { System.out.print(list.get(i)+"\t"); } } }
1.ArrayList類是基于數(shù)組結(jié)構(gòu)實(shí)現(xiàn)的,訪問速度優(yōu)先于LinkedList類。
2.LinkedList類占用的內(nèi)存空間比較大,但在批量插入,刪除,修改等時優(yōu)先于ArrayList類。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Java中List接口怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。