list中add、set方法詳解
Java中線性表List介面的插入方法有三大類,add、addAll和set,他們之間到底有什麼區別呢,我們一一來看
一、add方法,有2種過載方法
1、boolean add(E element):用於向集合的末尾插入新的元素,是List介面中最常用的插入方法
List<String> list = new ArrayList<String>();
list.add("小汪");
list.add("小王");
list.add("小旺");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
2、void add(int index, E element):可以在插入操作過程中指定插入的位置【下標從0開始】
List<String> addlist = new ArrayList<String>();
addlist.add(0,"小寫");
addlist.add(1,"小謝");
addlist.add(2,"小鞋");
for (int i = 0; i < addlist.size(); i++) {
System.out.println(addlist.get(i));
}
(1)當前要插入的位置已存在時,會自動將當前位置及之後的元素全部後移進行插入
List<String> addList = new ArrayList<String>();
addList.add(0,"小劉");//預設第一個
addList.add(0,"小六");//新加入已有位置元素時,原位置及後面所有元素後移【小六 變成下標為零的元素,原 小劉後移,其餘元素緊跟】
addList.add(1,"小柳");
for (int i = 0; i < addList.size(); i++) {
System.out.println(addList.get(i));
}
(2)引數index的值不能大於當前list的容量,即下標必須從0開始
List<String> addList = new ArrayList<String>();
addList.add(2,"小劉");
addList.add(0,"小六");
addList.add(1,"小柳");
for (int i = 0; i < addList.size(); i++) {
System.out.println(addList.get(i));
}
(3)由於ArrayList物件初始化時不包含任何元素,因此size的值為依舊為0,所以,即使在建立list物件時指定了初始化大小,也不可以從任意下標插入(無論是否初始化大小,下標必須從0開始)
List<String> addsize = new ArrayList<String>(5);
addsize.add(2,"小數");
addsize.add(4,"小樹");
addsize.add(1,"小叔");
for (int i = 0; i < addsize.size(); i++) {
System.out.println(addsize.get(i));
}
二、addAll方法,有2種過載方法
1、 boolean addAll(Collection<? extends String> c:在集合末尾可以一次性插入一個集合
List<String> list = new ArrayList<String>();
list.add("小汪");
list.add("小王");
list.add("小旺");
list.add("");
list.add(null);
List<String> listObj = new ArrayList<String>();
listObj.addAll(list);
for (int i = 0; i < listObj.size(); i++) {
System.out.println(listObj.indexOf(listObj.get(i))+"----"+listObj.get(i));
}
可以插入空的集合,但不能直接插入null
List<String> list = new ArrayList<String>();
list.add("小汪");
list.add("小王");
list.add("小旺");
list.add("");
list.add(null);
List<String> lista = new ArrayList<String>();
List<String> listObj = new ArrayList<String>();
listObj.addAll(list);
listObj.addAll(lista);
listObj.addAll(null);
for (int i = 0; i < listObj.size(); i++) {
System.out.println(listObj.indexOf(listObj.get(i))+"----"+listObj.get(i));
}
2、boolean addAll(int index, Collection<? extends E> c):可以在原集合的指定位置一次性插入一個新集合
List<String> list = new ArrayList<String>();
list.add("小汪"); //0
list.add("小王"); //1
list.add("小旺"); //2
List<String> lista = new ArrayList<String>();
List<String> indexList = new ArrayList<String>();
indexList.add("小哈");
indexList.add("小蛤");
indexList.add("小鉿");
List<String> listObj = new ArrayList<String>(20);
listObj.addAll(0,list); //0 1 2
listObj.addAll(1,lista);//不算數
listObj.addAll(3,indexList);
for (int i = 0; i < listObj.size(); i++) {
System.out.println(listObj.indexOf(listObj.get(i))+"----"+listObj.get(i));
}
(1)跟add(E element)方法類似:當前要插入的位置已存在時,會自動將當前位置及之後的元素全部後移進行插入
(2)插入的空集合是不算數的
(3)下標規則與add(int index, E element)方法一致,無論是否初始化大小,只能插入已存在且合法的下標
三、set(int index,E element):實際上是一種替換操作
List<String> list = new ArrayList<String>();
list.add("小汪"); //0
list.add("小王"); //1
list.add("小旺"); //2
list.set(2,"哇哈哈");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.indexOf(list.get(i))+"----"+list.get(i));
}
要設定某個位置上的元素,這個位置必須已存在,否則會丟擲異常
相關文章
- java原始碼研究--List中的set和add方法區別Java原始碼
- Java集合中List,Set以及Map等集合體系詳解(史上最全)Java
- STL中set用法詳解
- shell中set命令詳解(轉)
- python中list切片詳解Python
- Java中的Set, List, Map漫談Java
- git add命令詳解Git
- java中Map,List與Set的區別Java
- java 中 set map table list ~~的總結Java
- Java 中的泛型 集合(List,Set) MapJava泛型
- Java List/Set/MapJava
- List、Set、Queue、Map
- Dockerfile ,ADD詳細解讀Docker
- Java面試-List中的sort詳細解讀Java面試
- java中list、set和map 的區別(轉)Java
- Java筆記——【List、Set】Java筆記
- List,Set,Queue,Map介面
- abc347E Set Add Query
- Java集合(六) Set詳解Java
- 由Java中的Set,List,Map引出的排序技巧Java排序
- C# List用法詳解C#
- Pandas中resample方法詳解
- List、Set、Map的區別
- set、List、map的區別
- 詳解gitignore的使用方法,讓你盡情使用git add .Git
- SQL*Plus Set引數詳解SQL
- BASH shell set命令詳解(轉)
- Python基本語法_集合set/frozenset_內建方法詳解Python
- Java中getGenericSuperclass()方法詳解Java
- Java中的main()方法詳解JavaAI
- Java中的方法引用詳解Java
- (三分鐘系列)詳解Redis中列表(List)的使用方法和內部結構Redis
- set\list\map部分原始碼解析原始碼
- java 基礎之 Set、Map、ListJava
- Java集合框架List,Map,Set等Java框架
- Spring中注入List,Set,Map,Properties的xml檔案配置方法SpringXML
- Java中 set,list,array(集合與陣列)、Map相互轉換Java陣列
- Java小細節:List可以add(null)嗎?JavaNull