java 的Collection接口实例详解

1. Collection是集合类的一个顶级接口,其直接继承接口有List与Set。

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方法获取。

实例代码:

import java.util.*;
class ListDemo
{
 public static void sop(Object obj)
 {
  System.out.println(obj);
 }
 public static void method()
 {

  ArrayList al = new ArrayList();

  //添加元素
  al.add("java01");
  al.add("java02");
  al.add("java03");

  sop("原集合是:"+al);
  //在指定位置添加元素。
  al.add(1,"java09");

  //删除指定位置的元素。
  //al.remove(2);

  //修改元素。
  //al.set(2,"java007");

  //通过角标获取元素。
  sop("get(1):"+al.get(1));

  sop(al);

  //获取所有元素。
  for(int x=0; x<al.size(); x++)
  {
   System.out.println("al("+x+")="+al.get(x));
  }

  Iterator it = al.iterator();

  while(it.hasNext())
  {
   sop("next:"+it.next());
  }

  //通过indexOf获取对象的位置。
  sop("index="+al.indexOf("java02"));

  List sub = al.subList(1,3);

  sop("sub="+sub);
 }

 public static void main(String[] args)
 {

  //演示列表迭代器。
  ArrayList al = new ArrayList();

  //添加元素
  al.add("java01");
  al.add("java02");
  al.add("java03");

  sop(al);

  ListIterator li = al.listIterator();

  //sop("hasPrevious():"+li.hasPrevious());

  while(li.hasNext())
  {
   Object obj = li.next();

   if(obj.equals("java02"))
    //li.add("java009");
    li.set("java006");

  }

  while(li.hasPrevious())
  {
   sop("pre::"+li.previous());
  }
  //sop("hasNext():"+li.hasNext());
  //sop("hasPrevious():"+li.hasPrevious());

  sop(al);

  /*
  //在迭代过程中,准备添加或者删除元素。

  Iterator it = al.iterator();

  while(it.hasNext())
  {
   Object obj = it.next();

   if(obj.equals("java02"))
    //al.add("java008");
    it.remove();//将java02的引用从集合中删除了。

   sop("obj="+obj);

  }
  sop(al);
  */

 }
}

以上就是对JAVA Collection接口的资料整理,希望能帮助学习java 的同学。

(0)

相关推荐

  • 详解java中的Collections类

    一般来说课本上的数据结构包括数组.单链表.堆栈.树.图.我这里所指的数据结构,是一个怎么表示一个对象的问题,有时候,单单一个变量声明不堪大用,比如int,String,double甚至一维数组.二维数组无法完全表达你要表达的东西,而定义一个类Class有太过麻烦,这时候,你可以考虑一下用Java中的Collections类.使用Collections类,必须在文件头声明import java.util.*; 一.动态.有序.可变大小的一维数组Vector与ArrayList  Collectio

  • 全面了解JavaScirpt 的垃圾(garbage collection)回收机制

    一.垃圾回收机制-GC Javascript具有自动垃圾回收机制(GC:Garbage Collecation),也就是说,执行环境会负责管理代码执行过程中使用的内存. 原理:垃圾收集器会定期(周期性)找出那些不在继续使用的变量,然后释放其内存. JavaScript垃圾回收的机制很简单:找出不再使用的变量,然后释放掉其占用的内存,但是这个过程不是实时的,因为其开销比较大,所以垃圾回收器会按照固定的时间间隔周期性的执行. 不再使用的变量也就是生命周期结束的变量,当然只可能是局部变量,全局变量的生

  • java Collection 之Set使用说明

    Set 一个不包含重复元素的collection,确切的讲,set不包含满足e1.equals(e2)的元素对e1,e2,并且最多包含一个null元素: 此实现不是同步的,如果多个线程同时访问一个set,而其中至少一个线程修改了该set,那么它必须保持外部同步,通常是通过对自然封装该set的对象执行同步操作来完成,如果不存在这样的对象,则:Collections.synchronizedSet(): HashSet 集合中元素无顺序,不重复:数据结构是哈希表: 保证元素唯一性的原理:判断元素的H

  • java Collection 之List学习介绍

    List 一个有序的集合,允许元素的重复:该实现不是同步的,如果多个线程访问一个List实例,而其中至少一个线程从结构上修改了表(添加或删除元素),那么它需要保持外部同步:一般通过对自然封装该列表的对象进行同步操作来完成,如:Collections.synchronizedList()来包装列表: ArrayList List接口的大小可变数组的实现,实现了所有可选列表操作,并且允许包括null在内的所有元素, LinkedList List接口的链接列表实现,允许元素为null,实现所有可选的

  • Java集合框架之Collection接口详解

    Java是一门面向对象的语言,那么我们写程序的时候最经常操作的便是对象了,为此,Java提供了一些专门用来处理对象的类库,这些类库的集合我们称之为集合框架.Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组.链表.栈.队列.集合.哈希表等.学习Java集合框架下大致可以分为如下五个部分:List列表.Set集合.Map映射.迭代器(Iterator.Enumeration).工具类(Arrays.Collections). Java的集合类主要由两个接口派生而出:Co

  • 用Java集合中的Collections.sort方法如何对list排序(两种方法)

    第一种是list中的对象实现Comparable接口,如下: /** * 根据order对User排序 */ public class User implements Comparable <user> { private String name; private Integer order; public String getName() { return name; } public void setName(String name) { this.name = name; } publi

  • Java中的collection集合类型总结

    Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.* Java集合主要可以划分为4个部分:List列表.Set集合.Map映射.工具类(Iterator迭代器.Enumeration枚举类.Arrays和Collections). Java集合工具包框架如下图. 说明:看上面的框架图,先抓住它的主干,即Collection和Map. Collection是一个接口,是高度抽象出来的集合,它包含了集合的基本操作

  • 浅谈Java中Collection和Collections的区别

    1.java.util.Collection 是一个集合接口.它提供了对集合对象进行基本操作的通用接口方法.Collection接口在Java 类库中有很多具体的实现.Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式. Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set 2.java.util.Collections 是一个包装类.它包含有各种有关集合操作的静态多态方法.此类不能实例化,就像一

  • 详解Java的Hibernate框架中的Interceptor和Collection

    Interceptor 讲到Interceptor,相信熟悉struts2的童鞋肯定不会陌生了,struts2可以自定义拦截器进行自己想要的一系列相关的工作.而这里我们说的Interceptor也是差不多相似的功能.  废话不说,直接来代码:  下面这个是MyInterceptor类,它实现了Interceptor接口: public String onPrepareStatement(String arg0) { return arg0; } public boolean onSave(Obj

  • java TO ArrayCollection

    复制代码 代码如下: private var javalist:ArrayCollection; function resultHandler(event:ResultEvent):void{ javalist=ArrayCollection(event.result); //javalist=event.result as ArrayCollection; javabar.dataProvider=javalist; } JAVA代码返回java.util.List对象, 因为new Arra

随机推荐