Java学习笔记——应用矢量和迭代器来实现类似链表的功能
2014-12-22 12:17
746 查看
Java中没有指针,但有些对象是实现指针的功能的。如迭代器和矢量来实现链表的指针的功能,并且可以实现从两个方向来实现相关的操作。这里实现的是将Person定义在同一个Java文件中,也可以public定义Person放在独立的java 文件中。具体实现代码如下:
import java.io.*; import java.nio.*; import java.util.*; public class TryIterable { /** * @param args */ public static void main(String[] args) { // TODO 自动生成方法存根 Person aPerson = null; Vector<Person> filmCast = new Vector<Person>(); /*Vector 可实现自动增长的对象数组。 java.util.vector提供了向量类(vector)以实现类似动态数组的功能。在Java语言中没有指针的概念,但如果正确灵活地使用指针又确实可以大大提高程序的质量。比如在c,c++中所谓的“动态数组”一般都由指针来实现。为了弥补这个缺点,Java提供了丰富的类库来方便编程者使用,vector类便是其中之一。事实上,灵活使用数组也可以完成向量类的功能,但向量类中提供大量的方法大大方便了用户的使用。 创建了一个向量类的对象后,可以往其中随意插入不同类的对象,即不需顾及类型也不需预先选定向量的容量,并可以方便地进行查找。对于预先不知或者不愿预先定义数组大小,并且需要频繁地进行查找,插入,删除工作的情况。可以考虑使用向量类。 */ while (true) { aPerson = readPerson(); if (aPerson == null) { break; } filmCast.add(aPerson); } int count=filmCast.size(); System.out.println("You added "+count+(count==1?" person":" people")+" to the cast:"); ListIterator<Person> thisLot=filmCast.listIterator(); /*列表迭代器,可以让编程者从任何方向进行访问,类似于队列,有一系列的函数来实现相应的操作*/ while(thisLot.hasNext()){ System.out.println(thisLot.next()); } System.out.println("\nThe vector currently has room for "+(filmCast.capacity()-count)+" more people."); } static Person readPerson(){ String firstName=null; String surname=null; System.out.println("\nEnter first name or ! to end:"); try{ firstName=keyboard.readLine().trim();//读取输入数据,无空格,读取名字 if(firstName.charAt(0)=='!'){ return null;//确定终止符 } System.out.println("Enter surname:"); surname=keyboard.readLine().trim();//读取姓氏 }catch(IOException e){ System.err.println("Error reading a name."); e.printStackTrace(); System.exit(1); } return new Person(firstName,surname);//返回读取对象 } static BufferedReader keyboard=new BufferedReader(new InputStreamReader(System.in));//建立输入读取 } class Person {//定义人的对象 public Person(String firstName, String surname) { this.firstName = firstName; this.surname = surname; } @Override public String toString() { return firstName + " " + surname; } private String firstName; private String surname; }具体实现结果如下:
相关文章推荐
- Android(java)学习笔记258:JNI之hello.c(c代码功能实现)指针语法解析
- [学习笔记]EXCEL导入功能java代码实现
- JAVA学习笔记38——模拟实现Iterator+HashMap的“分拣”原理+“分拣”的应用
- 关于java打印功能的最简单实现的学习笔记
- iPhone开发笔记(19)实现类似网易新闻当应用状态变为active时手动调用下拉刷新的功能
- 【Java学习笔记】20.Properties实现付费功能案例
- Java学习笔记之 swing 基本实现QQ截屏功能
- 链表学习笔记--java语言实现
- Java菜鸟学习笔记(5)--用Math.random()实现验证码功能
- 算法(第四版)学习笔记之java实现栈和队列(链表实现)
- 栈的实现及应用学习笔记--Java实现
- Android(java)学习笔记181:Android 服务的应用,在Activity中实现背景音乐播放
- iPhone开发笔记(19)实现类似网易新闻当应用状态变为active时手动调用下拉刷新的功能
- Java学习笔记——链表的泛型实现和序列化读写
- OpenCV学习笔记-应用trackbar实现按钮功能
- Java菜鸟学习笔记--语法篇(一):用Math.random()实现验证码功能
- ITCAST视频-Spring学习笔记(使用CGLIB实现AOP功能与AOP概念解释)
- 用JS实现移动的窗口 - 流星絮语 JAVA学习笔记 - CSDNBlog
- [学习笔记]小型论坛功能——实现树状结构的主题贴显示的类[2]