Java(18) 集合框架

Posted 祝阿明

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

运行结果为:

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 }
示例2

运行结果为:

 注意;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 }
示例3

运行结果为:

 

以上是关于Java(18) 集合框架的主要内容,如果未能解决你的问题,请参考以下文章

java集合 ArrayList问题

Java集合源代码剖析Java集合框架

Java源代码之集合框架(图)

jdk源码阅读笔记之java集合框架(ArrayList)

18Java中的 数据结构

java集合框架代码演示demo