您现在的位置是:首页 > 文章详情

Java容器类详解

日期:2018-04-17点击:411

Java的容器

在Java中,我们想要保存对象可以使用很多种手段。最简单的就是数组。但是数组具有固定的尺寸,而通常来说,程序总是在运行时根据条件来创建对象,我们无法预知将要创建对象的个数以及类型,所以Java推出了容器类来解决这一问题。

Java的容器类分为List,Set,Queue和Map。

 

Java容器的基本概念

Java容器类库是用来保存对象的,他有两种不同的概念:

  1. Collection,独立元素的序列,这些元素都服从一条或多条规则。List、Set以及Queue都是Collection的一种,List必须按照顺序保存元素,而Set不能有重复元素,Queue需要按照排队规则来确定对象的顺序。
  2. Map,Map是键值对类型,允许用户通过键来查找对象。Hash表允许我们使用另一个对象来查找某个对象。

Collection接口

尽管存在这两种概念,我们在工程中,大部分代码还是和接口打交道。Collection是最基本的集合接口。一个Collection代表一组Object,即Collection的元素(Elements)。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”。ArrayList,HashSet等具体类均实现了Collection接口或Collection接口的子接口(List接口和Set接口等)。所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个 Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。

 

Java使用泛型来实现容器类,例如我们要使用顺序表这一数据结构,Java提供了ArrayList和LinkedList两种实现类,ArrayList的实现就是基于数组的。比如我们要存储一组用户,在Java8之前的版本,我们就可以这样声明对象:List<User> users = new ArrayList<User>();。然后通过add方法来添加变量。

 

迭代器

从之前的Collection接口中可以看出,任何容器类,都可以以某种方式插入、获取和删除元素。add()作为最基本的插入元素方法而get()则是基本取元素的方法。

但是如果我们仅仅使用get和add方法来进行元素操作,如果将一个类的方法实现了,如果想要将相同的代码用在其他容器类中就会遇到问题,那么我们如何解决这一问题呢?

在这里我们就引入了面向对象的设计模式迭代器模式。迭代器是一个对象,它的工作是遍历并选择序列中的对象。客户端不需要知道序列的底层架构。

Java的Iterator的定义如下:

public interface Iterator<E> { boolean hasNext(); E next(); void remove(); }

我们可以使用:

  1. next()方法来获取序列的下一个元素。
  2. hasNext()检查序列中是否还有元素。
  3. 使用remove()将迭代器新近返回的元素删除。比如我们要遍历一个容器:
List<String> keywords = new ArrayList<>(); keywords.add("hello"); keywords.add(0, "thank"); Iterator<String> iterator = keywords.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); }

当然也可以使用foreach语法进行遍历:

List<String> keywords = new ArrayList<>(); keywords.add("hello"); keywords.add(0, "thank"); for (String keyword : keywords) { System.out.println(iterator.next()); }

Iterator还有一些功能更为强大的子类型,我们会在下文予以介绍。

 

参考:

 

http://blog.csdn.net/u014136713/article/details/52089156

https://www.tianmaying.com/tutorial/java_collection

 

 

 

 

我们可以使用:

  1. next()方法来获取序列的下一个元素。
  2. hasNext()检查序列中是否还有元素。
  3. 使用remove()将迭代器新近返回的元素删除。比如我们要遍历一个容器:

List<String> keywords = new ArrayList<>();keywords.add("hello");keywords.add(0, "thank");Iterator<String> iterator = keywords.iterator();while (iterator.hasNext()) { System.out.println(iterator.next());}

当然也可以使用foreach语法进行遍历:

List<String> keywords = new ArrayList<>();keywords.add("hello");keywords.add(0, "thank");for (String keyword : keywords) { System.out.println(iterator.next());}

Iterator还有一些功能更为强大的子类型,我们会在下文予以介绍。

原文链接:https://yq.aliyun.com/articles/680402
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章