【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容器,有兴趣的朋友可以继续关注我的博客!
- 【Java基础】--Java容器剖析:collection容器
- java学习基础 Collection容器的区别
- Java容器类--Collection
- java容器(一) Collection
- Java 容器 collection hashCode
- java容器-Collection<E>
- java collection容器
- Java--容器(Collection)(一)
- Java--容器(Collection)(二)
- Java容器------Collection接口
- Java 容器Collection(5)
- Java容器Collection
- Java容器——Collection
- java--collection容器的使用
- java 容器类 collection 泛型
- 【JAVA之容器】2.Collection
- java Collection容器(集合类)
- 【Java基础】--Java容器剖析:Set、List、Map接口
- Android 隐藏显示键盘
- html+css2次学习----a链接的href属性的使用
- URL编码表/HTTP消息含义
- 流量控制和拥塞控制
- python中kmeans聚类实现
- 【Java基础】--Java容器剖析:collection容器
- 手动将jar添加到maven仓库中
- 软件测试常用术语
- 快速排序
- cocos2dx3.4 打包apk黑屏,发现glvert无限增长的一个bug
- [sicily]1198. Substring
- Git change history commit author ( 修改历史 commit的 author)
- R语言中时间格式个人使用总结
- Android Toast提示封装