前言
如C++中的STL,Java也提供了许多封装好了的数据结构。
本文将大致介绍如何使用这些封装好了的数据结构。
集合类型的特性
1. Java中的集合类型采用的是策略和实现相分离的型式,也就是说提供集合的抽象定义,也提供集合的具体实现,用户可以按照自己的需要去继承,改写。
比如,你可以定义一个链表类的对象变量,然后任你选择是让它采用何种实现。
在之后的代码中,你只用知道这个链表类的对象,至于它是何种方式实现,一概不管。
2. 所有的集合类型都继承了Collection接口和Iterator接口。
这两个接口里面有很多很实用的方法,请读者自行查阅。
集合类型的遍历方式
STL中有迭代器,Java的集合类型中自然也有,而且Java中的迭代器是支持删除的(C++中不支持)。
使用的方法和C++中很像,具体方法请参考下面示例代码。
集合类型的种类
1. List
2. Set
3. Map
这三类集合的逻辑结构在C++部分的博客已提到过,和Java中是一样的,这里不再累述。
但它们在Java中有更多的物理实现,当需要用到数据结构相关处理的时候,请根据需要查找相关资料,也许已经有封装好了的实现了。
代码示例 - 以Set为例
1 package test; 2 3 import java.util.HashSet; 4 import java.util.Iterator; 5 import java.util.Set; 6 7 /** 8 * @author FangMeng 9 * @version 1.0.0 10 * @2014-12-09 11 */ 12 public class Java7Learn { 13 14 public static void main(String[] args) { 15 16 // 构造一个测试的Set集合 17 Set<String> s = new HashSet<>(); 18 s.add(new String("1")); 19 s.add(new String("2")); 20 21 /* 22 * 遍历 23 */ 24 Iterator<String> i = s.iterator(); 25 while(i.hasNext()){ 26 System.out.println(i.next()); 27 } 28 29 /* 30 * 检索 31 */ 32 String testStr = "1"; 33 if (s.contains(testStr)) { 34 System.out.println("contain: " + testStr); 35 } 36 37 testStr = "2"; 38 if (s.contains(testStr)) { 39 System.out.println("contain: " + testStr); 40 } 41 42 testStr = "3"; 43 if (s.contains(testStr)) { 44 System.out.println("contain: " + testStr); 45 } 46 47 } 48 }
运行结果
小结
Java中的集合结构实现很多,在项目中根据需要多多查询手册,定可让开发更加效率。