集合框架(六)
1.集合框架
Collection Map
List Set HashMap
ArrayList LinkesList HashSet
2.List的方法
List <元素類型> list=new ArrayList<元素類型>();
list.add(元素); //添加元素
list.add(index,元素); //向指定的位置插入元素
list.remover(下標); //刪除指定下標的元素
list.remover(元素); //刪除指定元素
list.get(index); //獲取指定下標的元素
list.contains(元素); //集合中是否包含指定元素
運行結果:
1 package Day13七; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 import java.util.List; 6 7 public class Test1 { 8 public static void main(String[] args) { 9 //可重復,有序(不唯一,有序) 10 List<String> list=new ArrayList<String>(); 11 list.add("aaa");代碼示例12 list.add("bbb"); 13 list.add("aaa"); 14 //向指定位置,插入元素 15 list.add(1,"ccc"); 16 //獲得指定位置元素的值 17 String val=list.get(0); 18 //刪除指定位置值(返回刪除掉的值) 19 String val1=list.remove(1); 20 //是否包含指定元素 21 boolean flag=list.contains("bbb"); 22 23System.out.println(val); 24 System.out.println(list); 25 System.out.println(flag); 26 } 27 }
3.Collection,List,Set的區別
Collection:不唯一,無序
List:不唯一,有序
Set:唯一,無序
4.ArrayList和LinkedList的區別
a.都實現了List
b.ArrayList是可變長數組方式實現,查詢效率高
LinkedList是鏈表方式實現,增加和刪除效率高
5.List常用方法
List<Object> list=new ArrayList<Object>();
list.add(obj); //添加元素
list.get(key); //獲取指定key元素
list.size(); //長度
list.remover(obj); //刪除指定元素
list.containKey(key); //是否包含指定key
6.Map常用方法(鍵值對方式存儲數據)
Map<Object,Object> maps=new HashMap<Object,Object>();
maps.put(key,value); //增加元素
maps.get(key); //獲取指定key的值
maps.size(); //長度
maps.remove(key); //刪除指定元素
maps.containsKey(key); //是否包含指定key
註意:key是唯一的,如果重復那麽後面的會覆蓋前面的
value是可以重復的
運行結果:
1 package Day13七; 2 3 public class Penguin extends Pet{ 4 String name="無名氏"; //昵稱 5 String sex="Q仔"; //性別 6 7 public Penguin() { 8 9 } 10 public Penguin(String name,String sex){ 11 this.name=name; 12 this.sex=sex; 13 } 14 15 /** 16 * 輸出企鵝的信息 17 */ 18 public void print(){ 19 System.out.println("寵物的自白:\n我的名字叫"+this.name+",性別是"+this.sex+"。"); 20 } 21 22 public String getName() { 23 return name; 24 } 25 26 public void setName(String name) { 27 this.name = name; 28 } 29 30 public String getSex() { 31 return sex; 32 } 33 34 public void setSex(String sex) { 35 this.sex = sex; 36 } 37 @Override 38 public String toString() { 39 return sex+" "+getName(); 40 } 41 42 }企鵝類
1 package Day13七; 2 3 public class Pet { 4 private int age; //年齡 5 private String name; //昵稱 6 private int health; //健康值 7 private int love; //親密度 8 public Pet() { 9 10 } 11 //打印信息 12 public void print(){ 13 System.out.println("名字:"+this.name+",年齡:"+this.age+",健康值:"+this.health+",親密度:"+this.love); 14 } 15 16 public int getAge() { 17 return age; 18 } 19 public void setAge(int age) { 20 this.age = age; 21 } 22 public String getName() { 23 return name; 24 } 25 public void setName(String name) { 26 this.name = name; 27 } 28 public int getHealth() { 29 return health; 30 } 31 public void setHealth(int health) { 32 this.health = health; 33 } 34 public int getLove() { 35 return love; 36 } 37 public void setLove(int love) { 38 this.love = love; 39 } 40 41 }父類
1 package Day13七; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 public class TestMap { 7 public static void main(String[] args) { 8 //key--->value 9 //名字-->企鵝 10 Map<String,Penguin> maps=new HashMap<String,Penguin>(); 11 //增加 12 Penguin p=new Penguin(); 13 p.setName("歐歐"); 14 p.setSex("男"); 15 maps.put("歐歐", p); 16 17 Penguin p1=new Penguin(); 18 p1.setName("灰灰"); 19 p1.setSex("男"); 20 maps.put("灰灰", p1); 21 22 //取值 23 //maps.get(key) 24 Penguin p2=maps.get("歐歐"); 25 p2.print(); 26 27 //大小 28 System.out.println(maps.size()); 29 //是否包含key 30 System.out.println(maps.containsKey("歐歐")); 31 //刪除 32 maps.remove("歐歐"); 33 34 System.out.println(maps); 35 } 36 }測試類
7.vector和ArrayList的異同
實現原、功能相同,可以互用
主要區別
vector線程安全,ArrayList重速度輕安全,線程非安全
長度需增長時,vector默認增長一倍,ArrayList增長50%
8.Hashtable和HashMap異同
實現原、功能相同,可以互用
主要區別
Hashtable繼承Dictionary類,HashMap實現Map接口
Hashtable線程安全,HashMap線程非安全
Hashtable不允許null值,HashMap允許null值
線程是程序中一個單一的順序控制流程。進程內一個相對獨立的、可調度的執行單元,
是系統獨立調度和分派CPU的基本單位指運行中的程序的調度單位。在單個程序中同
時運行多個線程完成不同的工作,稱為多線程。
單線程在程序執行時,所走的程序路徑按照連續順序排下來,前面的必須處理好,後面的才會執行。
單線程就是進程只有一個線程
多線程就是進程有多個線程
9.集合的叠代
語法:Iterator<Object> it=集合.iterator();
while(it.hasNext()){
Object obj=it.next();
}
is.hasNext(); //判斷是否有下一個元素
it.next(); //移動指針,返回指針指向元素
註意:集合在遍歷的過程中不能進行修改,如果進行了修改操作,那麽就會拋出ConcurrentModificationException異常,
如果需要進行刪除,使用叠代器的it.remove()方法
運行結果:
1 package Day13七; 2 3 import java.util.Collection; 4 import java.util.HashMap; 5 import java.util.Iterator; 6 import java.util.Map; 7 import java.util.Set; 8 9 public class Test5 { 10 public static void main(String[] args) { 11 Map<String,String> maps=new HashMap<String,String>(); 12 maps.put("a", "A"); 13 maps.put("b", "B"); 14 maps.put("c", "C"); 15 16 //Iterator叠代器 17 Iterator<String> it=maps.keySet().iterator(); 18 //hasNext:判斷下一個是否有值 19 while(it.hasNext()){ 20 //移動下標,並返回當前值 21 String str=it.next(); //取key 22 System.out.println(str); 23 if(str.equals("a")){ 24 it.remove(); 25 } 26 System.out.println(str); 27 } 28 29 //Iterator叠代器 30 Iterator<String> its=maps.values().iterator(); 31 //hasNext:判斷下一個是否有值 32 while(its.hasNext()){ 33 //移動下標,並返回當前值 34 String str1=its.next(); //取values 35 System.out.println(str1); 36 } 37 } 38 }代碼示例
集合框架(六)