博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ava集合框架
阅读量:5334 次
发布时间:2019-06-15

本文共 3491 字,大约阅读时间需要 11 分钟。

 

(一)Collection

Collection定义了集合框架的共性功能。

       1,添加  

              add(e);

             addAll(collection);

       2,删除  

            remove(e);

           removeAll(collection);

           clear();

      3,判断。  

           contains(e);

           isEmpty();

     4,获取

          iterator();

          size();

    5,获取交集。

        retainAll();

   6,集合变数组。

        toArray();

1,add方法的参数类型是Object。以便于接收任意类型对象。

 

2,集合中存储的都是对象的引用(地址)

 

什么是迭代器呢?

             其实就是集合的取出元素的方式。 如同抓娃娃游戏机中的夹子。

     迭代器是取出方式,会直接访问集合中的元素。 所以将迭代器通过内部类的形式来进行描述。 通过容器的iterator()方法获取该内部类的对象。

(二),List

 

Collection  

            |--List:元素是有序的,元素可以重复。因为该集合体系有索引。  

            |--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。

            |--LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。

            |--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。

 

            |--Set:元素是无序,元素不可以重复。、

 

           List:  特有方法。凡是可以操作角标的方法都是该体系特有的方法。

 

  增  

         add(index,element);  

         addAll(index,Collection);

 

删  

       remove(index);

 

改  

     set(index,element);

查  

    get(index):  subList(from,to);

     listIterator();

     int indexOf(obj):获取指定元素的位置。

      ListIterator listIterator();

List集合特有的迭代器。ListIterator是Iterator的子接口。

在迭代时,不可以通过集合对象的方法操作集合中的元素。 因为会发生ConcurrentModificationException异常。

所以,在迭代器时,只能用迭代器的放过操作元素,可是Iterator方法是有限的, 只能对元素进行判断,取出,删除的操作, 如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。

该接口只能通过List集合的listIterator方法获取。

 

1 package com.itheima.day14; 2  3 import java.util.*; 4  5  6 public class ArrayListDemo { 7  8     /** 9      * 去除ArrayList集合中的重复元素10      */11     //定义一个打印的方法12     public static  void sop(Object obj){13         System.out.println(obj);14     }15     //定义一个方法实现去除集合中的重复元素16     public static ArrayList Method_delete(ArrayList arl){17         ArrayList al=new ArrayList();18         Iterator it=arl.iterator();19         while (it.hasNext()){20             Object obj=it.next();21             if(!al.contains(obj))22                 al.add(obj);23         }24         25         return al;26     }27     public static void main(String[] args) {28         ArrayList al=new ArrayList();29         al.add("java01");30         al.add("java02");31         al.add("java03");32         al.add("java02");33         al.add("java03");34         al.add("java04");35         al=Method_delete(al);36         Iterator it=al.iterator();37         while (it.hasNext()){38             39             sop(it.next());40         }41         42 43     }44 45 }

 

 

   LinkedList:特有方法:

               addFirst();

               addLast();

       getFirst();

       getLast(); 获取元素,但不删除元素。如果集合中没有元素,会出现NoSuchElementException

 

      removeFirst();

      removeLast(); 获取元素,但是元素被删除。如果集合中没有元素,会出现NoSuchElementException

在JDK1.6出现了替代方法。

   增

      offerFirst();

     offerLast();

查:

        peekFirst();

        peekLast(); 获取元素,但不删除元素。如果集合中没有元素,会返回null。

          pollFirst();

          pollLast(); 获取元素,但是元素被删除。如果集合中没有元素,会返回null。

 

1 package com.itheima.day14; 2  3 import java.util.LinkedList; 4  5 public class LinkedListDemo { 6  7     /** 8      * 使用LinkedList模拟一个堆栈或者队列数据结构。 9 10 堆栈:先进后出  如同一个杯子。11 队列:先进先出 First in First out  FIFO 如同一个水管。12 13      */14 15     16     public static void main(String[] args) {17         Duilie dl=new Duilie();18         dl.MyAdd("java01");19         dl.MyAdd("java02");20         dl.MyAdd("java03");21         dl.MyAdd("java04");22         dl.MyAdd("java05");23         dl.MyAdd("java06");24         while(!dl.inNull()){25             System.out.println(dl.MyGet());26         }27         28     }29 30 }31 class Duilie{32     private LinkedList link;33     Duilie(){34         link=new LinkedList();35         }36     public void MyAdd(Object obj){37         link.add(obj);38     }39     public Object MyGet(){40         return link.removeFirst();41     }42     public boolean inNull(){43         return link.isEmpty();44     }45     46     47     48 }

 

 

 

 

 

转载于:https://www.cnblogs.com/zxd-java/archive/2012/10/16/2726939.html

你可能感兴趣的文章
(转)mysql自增列导致主键重复问题分析
查看>>
虚函数&&虚继承
查看>>
poj 2007 Scrambled Polygon (凸包 )
查看>>
Tomcat 启动不了的问题
查看>>
ThinkPHP整合Kindeditor多图处理示例
查看>>
集中式vs分布式区别
查看>>
jQuery中的DOM操作
查看>>
Android 4.3中SEAndroid展望[转]
查看>>
线段树解Joseph
查看>>
Configuration file schema for the .NET Framework
查看>>
Asynchronous Programming Using Delegates使用委托进行异步编程
查看>>
[Unity插件]DOTween基础
查看>>
微信浏览器取消缓存的方法
查看>>
Linux
查看>>
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
查看>>
【BZOJ-2295】我爱你啊 暴力
查看>>
【BZOJ-1055】玩具取名 区间DP
查看>>
Oracle安装配置—64位Win7安装配置64位Oracle
查看>>
Bit Twiddling Hacks
查看>>
个人总结
查看>>