首页 > 代码库 > 集合框架(六)
集合框架(六)
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 23 System.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 }
集合框架(六)