巧用重写toString的方法,输出格式的问题留给java帮我解决吧~

原创 2006年06月10日 02:50:00

 

 

 

 

 

 

 

 

用动态数组ArrayList实现上面效果。看似简单其实也的确不难,不过有些细节可能会被忽略。

我刚看到的时候也没太在意每组数据间的小箭头,一股脑的想到去用动态二维数组来实现,因此写下了下面的代码,不过还好因此知道了用ArrayLIst模拟实现动态数组的方法,不过就是觉得有点麻烦,实际上不知道能不能派上用场。

import java.util.ArrayList;
public class MailAddressTest
{
 public static void main(String [] argv)
 {
  ArrayList mailObjx=new ArrayList();
  {
   ArrayList mailObjy=new ArrayList();
      mailObjy.add("Name : ");
      mailObjy.add("Street : ");
      mailObjy.add("City : ");
      mailObjy.add("Country : ");
      mailObjy.add("PinCode : ");
      mailObjx.add(mailObjy);
  }
  {
   ArrayList mailObjy=new ArrayList();
      mailObjy.add("David Clarke");
      mailObjy.add("10 Downing Street");
      mailObjy.add("LondonState:London");
      mailObjy.add("United Kingdom");
      mailObjy.add("110022");
      mailObjx.add(mailObjy);
  }
  {
   ArrayList mailObjy=new ArrayList();
      mailObjy.add("John Lenon");
      mailObjy.add("12 Park Avenue");
      mailObjy.add("Californiastate:California");
      mailObjy.add("USA");
      mailObjy.add("210033");
      mailObjx.add(mailObjy);
  }
  {
   ArrayList mailObjy=new ArrayList();
      mailObjy.add("Stefii Graff");
      mailObjy.add("14 Maple Lane");
      mailObjy.add("MahomaState:Sydney");
      mailObjy.add("Australia");
      mailObjy.add("412033");
      mailObjx.add(mailObjy);
  }
  System.out.println("*****************************");
  System.out.println("客户电子邮件地址");
  System.out.println("*****************************/n[/n");
  for(int i=1;i<mailObjx.size();i++)
  {
   for(int j=0;j<((ArrayList)mailObjx.get(i)).size();j++)
   {
    System.out.print(((ArrayList)mailObjx.get(0)).get(j));
    System.out.println(((ArrayList)mailObjx.get(i)).get(j));

   }
   System.out.println();
  }
  System.out.println("]");
 }
}

虽然看起来有点累,不过最关键其实是最后几句的ArrayList的嵌套而已,不过这样做不能做到题目要求的效果,主要是那几个可恶的小箭头做的怪。

要显示箭头和两边的小框其实是直接显示ArrayList对象toString后java自动加上去的分隔符,如果先要保留并且按照自己希望的格式显示的话就需要修改被加入到ArrayList的元素对象的toString方法以达到目的。正确的代码如下:

import java.util.ArrayList;
public class MailAddressTest2
{
 ArrayList mailObj;
 MailAddressTest2()
 {
  mailObj=new ArrayList();
 }
 void add()
 {
  mailObj.add(new Info("David Clarke","10 Downing Street","LondonState : London","United Kingdom","110022"));
  mailObj.add(new Info("John Lenon","12 Park Avenue","CaliforniaState : California","USA","210033"));
  mailObj.add(new Info("Stefii Graff","14 Maple Lane","MahomaState : Sydney","Australia","412033"));
  
 }
 void disp()
 {
  System.out.println(mailObj);
 }
}
class Info
{
 String name,street,city,country,pinCode;
 Info(String name,String street,String city,String country,String pinCode)
 {
  this.name=name;
  this.street=street;
  this.city=city;
  this.country=country;
  this.pinCode=pinCode;
 }
 public String toString()
 {
  return "/nName : "+this.name+"/nStreet : "+this.street+
  "/nCity : "+this.city+"/nCountry : "+this.country+
  "/nPinCode : "+this.pinCode+"/n";

 }
}
class Test
{
 public static void main(String [] argv)
 {
  MailAddressTest2 obj=new MailAddressTest2();
  obj.add();
  obj.disp();
 }
}

在这里需要修改的是自定义的Info类的toString的方法,然后直接把ArrayList的对象mailObj输出就行了。

 

自我总结:应该学会利用java的override功能,重写一些已有的方法,让别人的代码为自己服务,不过想偷懒也不是一件容易的事情啊~

相关文章推荐

ArrayList()类中的toString()方法的重载源码

类ArrayList的toString()方法的重载 源码分析

ActionBar各种属性的详细解析

ActionBar 出自Android中文Wiki 跳转到: 导航, 搜索 ActionBar: 英文原文:http://developer.android.com/ref...

Android -- 使用inBitmap要注意的地方

SDK版本 需要注意的是inBitmap只能在3.0以后使用。2.3上,bitmap的数据是存储在native的内存区域,并不是在Dalvik的内存堆上。   在android3.0开始,系统在...

《问题总结》JAVA什么时候要覆盖toString()、equals()、hashCode()方法??为什么要覆盖呢? 《通俗回答》

-------------------------------------------------------- tostring方法一般是在输出累的时候使用的比如说system.out.print...
  • bb175pt
  • bb175pt
  • 2013年06月19日 17:15
  • 1321

Java重写ToString()方法的意义

1、toString()就是是重写,对于一般的对象来说都会有这个方法,其实这个方法的目的,主要就是将对象按字符串的方式输出出来:打个比方,比如一个People类,里边有name,age这两个属性, ...

22-JAVA面向对象-重写toString()与equals()方法

public class a { int b = 123; //基类是Object. 可以查看api.Object里的几个方法.这里是重写toString() //可以通过自定义的方式显示实例的...

一起学Java_Eclipse开发工具介绍及equals、toString方法的重写equals

###11.01_Java开发工具(常见开发工具介绍)(了解) * A:操作系统自带的记事本软件 * B:高级记事本软件 * C:集成开发环境 IDE     * (Integrated De...

Java重写toString方法

学习Java的人都知道,Java所有类都是Object的子类。所以,所有的Java对象都可以调用Object类提供的方法。其中,toString()就是其中一个。下面讲解一下为什么会有重写toStri...

Linq中字段数据类型转换问题(Linq to entity,LINQ to Entities 不识别方法"System.String ToString()"问题解决)

1、在工作中碰到这样一个问题: 使用linq时,需要查询两个表,在这两张表中关联字段分别是int,和varchar()也就是string,在linq中对这两个字段进行关联, 如果强制类型转换两个不同类...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:巧用重写toString的方法,输出格式的问题留给java帮我解决吧~
举报原因:
原因补充:

(最多只允许输入30个字)