Java(18) 集合框架
一.集合框架
Collectoin Map
List set HashMap
ArrayList LinkedList HashSet
1.1 List的方法
List<元素> list = new ArrayList<元素类型>()
list.add(元素);//增加元素
list.add(元素);//向指定位置插入元素
list.remove(元素);//删除指定小标的元素
list.remove(元素);//删除指定元素
list.remove(元素);//获得指定下标的元素
list.remove(元素);//集合中是否有指定元素
1 public class Test1 { 2 public static void main(String[] args) { 3 Dog ooDog = new Dog("欧欧","拉布拉多犬"); 4 Dog yyDog = new Dog("丫丫","雪娜瑞"); 5 Dog mmDog = new Dog("美美","雪娜瑞"); 6 Dog ffDog = new Dog("菲菲","拉布拉多犬"); 7 List d = new ArrayList(); 8 d.add(ooDog); 9 d.add(yyDog); 10 d.add(mmDog); 11 d.add(2, ffDog);//添加yyDog在指定位置 12 System.out.println("共计有"+d.size()+"条狗狗"); 13 System.out.println("分别是:"); 14 for(int i=0;i<d.size();i++){ 15 Dog dog =(Dog) d.get(i); 16 System.out.println(dog.getName()+"\t"+dog.getStrain()); 17 } 18 } 19 }
运行结果为:
1.2 Collection,List,Set的区别
Collection:不唯一,无序
List:不唯一,有序
Set:唯一,无序
1.3 ArrayList和LinkedList的区别
a.都实现了List
b.ArrayList是可边长数组方式实现,查询效率高
LinkedList是链表方式实习,增加和删除效率高
1.4 List的常用方法
List<Object> list = new ArrayList<Object>();
list.add(obj);//增加元素
list.get(下标)//获得指定下标元素
list.size();//长度
list.remove(obj);//删除指定元素
list.contains(obj);//是否包含指定元素
1.5 Map 常用方法(键值对方式存储数据)
Map<Object,Object> maps = new HanshMap<Object,Object>();
maps.put(key,value);//增加元素
maps.get(key);//获得指定key的值
maps.size();//长度
maps.remove(key);//删除指定元素
maps.containsKey(key);//是否包含指定key
1 public class Test2 { 2 public static void main(String[] args) { 3 Dog ooDog = new Dog("欧欧","拉布拉多犬"); 4 Dog yyDog = new Dog("丫丫","雪娜瑞"); 5 Dog mmDog = new Dog("美美","雪娜瑞"); 6 Dog ffDog = new Dog("菲菲","拉布拉多犬"); 7 LinkedList d = new LinkedList(); 8 d.add(ooDog); 9 d.add(yyDog); 10 d.addFirst(mmDog); 11 d.addLast(ffDog); 12 Dog dogFirst = (Dog)d.getFirst(); 13 System.out.println("第一条狗狗的昵称是:"+dogFirst.getName()); 14 Dog dogLast = (Dog)d.getLast(); 15 System.out.println("第一条狗狗的昵称是:"+dogLast.getName()); 16 d.removeLast(); 17 d.removeFirst(); 18 System.out.println("\n删除部分狗狗后还有"+d.size()+"条狗狗"); 19 System.out.println("分别是:"); 20 for(int i=0;i<d.size();i++){ 21 Dog d1 = (Dog) d.get(i); 22 System.out.println(d1.getName()+"\t"+d1.getStrain()); 23 } 24 } 25 }
运行结果为:
注意;key是唯一的,重复的话那么后面的会覆盖前面的value是可以重复的
Vector和ArrayList的异同
a.Vector的线程安全,ArrayList重速度轻安全,线程非安全
b.长度需增长时,Vector默认增长一倍,ArrayList增长50%
Hashtable和HashMap的异同
a.实现原理,功能相同,可以互用
b.主要区别
1,Hashtable继承Dictionary类,HashMap实现接口
2,Hashtable线程安全,HashMap线程非安全
3,Hashtable不允许null值,HashMap允许null值
1.6集合的迭代
语法:Interator<Object> it = 集合.iterator();
while(it.hasNext){
Object obj = it.next();
}
it.hasNext();//判断是否有下一个元素
it.next;//移动指增,返回指增指向元素
注意:集合在 篇利的过程中不能进行修改,进行了修改操作,那么就会抛出
ConcarrentModification Exception异常,需要修改的话,使用迭代器的it.remove()方法;
1 public class Test3 { 2 public static void main(String[] args) { 3 Dog ooDog = new Dog("欧欧","拉布拉多犬"); 4 Dog yyDog = new Dog("亚亚","雪娜瑞"); 5 Dog mmDog = new Dog("美美","雪娜瑞"); 6 Dog ffDog = new Dog("菲菲","拉布拉多犬"); 7 Map m = new HashMap(); 8 m.put(ooDog.getName(), ooDog); 9 m.put(yyDog.getName(),yyDog ); 10 m.put(mmDog.getName(),mmDog ); 11 m.put(ffDog.getName(),ffDog); 12 System.out.println("使用Iterator遍历,所有狗狗的昵称和品种分别是:"); 13 //取出所有key的集合 14 Set keys = m.keySet(); 15 Iterator it = keys.iterator(); 16 while(it.hasNext()){ 17 String k = (String)it.next(); 18 Dog d = (Dog)m.get(k); 19 System.out.println(k+"\t"+d.getStrain()); 20 } 21 } 22 }
运行结果为: