【Java基础】--Java容器剖析:collection容器

来源:互联网 发布:mysql限制登录次数 编辑:程序博客网 时间:2024/06/09 09:09


背景:

       起初,Java应该先有的数组。数组是一种高效存储和随机访问对象引用序列的方式,在效率和类型检查方面很有优势,但是当创建一个数组对象的时候,数组的大小也就固定了。为了满足想要多少分配空间,就能占多少,容器就诞生了~~

 

概念:

Java API所提供的一系列类的实例,用于在程序中存放对象。下图是容器的API框架图:

 

JDK提供的容器:

  Set:数据对象无序,不可重复

  List:数据对象有序  ,可重复

       附:重复就是通过equals方法对比的结果 

  Map:接口定义了存储“键(key)-值(value)映射对”的方法。


Collection接口:

Collection接口定义了存储的一组对象的方法,其子接口Set和List分别细化了存储的方式。

Demo代码:

实例化一个ArrayList对象,实现父Collection接口,通过add方法添加两个元素,并打印c容器的大小和内容。

import java.util.*;public class Main {public static void main(String[] args) {Collection c=new ArrayList();//父类Collection实例化一个子类对象ArrayList //可以放入不同的对象。 c.add("hello");c.add(new Integer(100));System.out.println(c.size());        System.out.println(c); }}


注意:

为啥要写Collection c=new ArrayList();父类指向子类的接口,这样实例化的对象里面只拥有父类方法的具体实现。假如根据需要,不实例化ArrayList了,改成LinkList了,只需要修改ArrayList出即可使用,体现了代码的灵活性。


输出结果:


Collection Remove代码:

跟上面的代码比,添加了remove方法的使用,调用Collection的add方法后移除remove,输出操作后的结果。

import java.util.*;public class Main {public static void main(String[] args) {Collection c=new HashSet();//可以放入不同的对象。 c.add("hello");c.add(new Name("f1","l1"));c.add(new Integer(100));                        //新添加移除remove方法                        c.remove("hello");c.remove(new Integer (100)); //移除的时候,有一个equals的对比。System.out.println(c.remove(new Name("f1","l1")));System.out.println(c);}}class Name{private String firstName,lastName;public Name(String firstName,String lastName){this.firstName=firstName;this.lastName=lastName;}public String getFirstName(){return firstName;}public String getLashName(){return lastName;}public String toString(){return firstName + " " + lastName;}public boolean equals(Object obj){if(obj instanceof Name){Name name=(Name) obj;return (firstName.equals(name.firstName)) &&(lastName.equals(name.lastName));}return super.equals(obj);}public int hashCode(){return firstName.hashCode();}}

输出结果:




在作为索引的时候,重写equals的时候要重写hashcode.


Iterator接口:


Iterator就是一个统一遍历Collection所有元素的方法。

1所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象。

2、Iterator对象称作迭代器,用以方便的实现对容器元素的遍历实现。

3、Iterator实现了下列方法:



Iterator实例代码:

import java.util.*;public class Main {public static void main(String[] args) {Collection c=new HashSet();c.add(new Name("f1","l1"));c.add(new Name("f3","l3"));c.add(new Name("f5","l5"));//统一遍历Collection里面所有的元素Iterator i=c.iterator();while(i.hasNext()){Name n=(Name)i.next();System.out.println(n.getFirstName()+" ");}}}class Name{private String firstName,lastName;public Name(String firstName,String lastName){this.firstName=firstName;this.lastName=lastName;}public String getFirstName(){return firstName;}public String getLashName(){return lastName;}public String toString(){return firstName + " " + lastName;}public boolean equals(Object obj){if(obj instanceof Name){Name name=(Name) obj;return (firstName.equals(name.firstName)) &&(lastName.equals(name.lastName));}return super.equals(obj);}public int hashCode(){return firstName.hashCode();}}


输出结果:


注意:

Iterator对象的remove方法是在迭代过程中删除元素的唯一的安全方法。使用的过程中拒绝其他的remove方法。


下面一篇将为大家继续深入讲解Java容器,有兴趣的朋友可以继续关注我的博客!





1 0
原创粉丝点击