巧用重写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功能,重写一些已有的方法,让别人的代码为自己服务,不过想偷懒也不是一件容易的事情啊~

重写toString()方法

学习Java的人都知道,Java所有类都是object的子类。所以,所有的Java对象都可以调用object类提供的方法。其中,toString()就是其中一个。下面讲解一下为什么会有重写toStri...
  • u011209223
  • u011209223
  • 2016年10月09日 09:58
  • 1133

如何相互转换逗号分隔的字符串和List (Java程序员日记 2015/03/06)

如果程序员想实现某种功能,有两条路可以走。一条就是自己实现,一条就是调用别人的实现,别人的实现就是所谓的API。而且大多数情况下,好多“别人”都实现了这个功能。程序员有不得不在这其中选择。大部分情况下...
  • yywusuoweile
  • yywusuoweile
  • 2015年12月15日 14:47
  • 28720

关于重写toString方法

关于重写toString
  • zhengwei223
  • zhengwei223
  • 2015年06月27日 20:16
  • 4565

重写toString方法-日志

relectionToString()将利用Java Refelection机制显示类实例的所有属性的信息.
  • winy_lm
  • winy_lm
  • 2016年08月25日 17:01
  • 616

Java 重写tostring方法

Java中所有的类都是继承于Object类,自带tostring方法,输出的是类名和内存首地址,通过重写toString方法,体会Java语言的内涵。 package First; public ...
  • fusugongzi
  • fusugongzi
  • 2016年04月27日 14:32
  • 2742

ArrayList的toString()方法

这个小程序中为什么输出[100,200]呢import java.util.ArrayList;import java.util.List;public class Hello { public st...
  • dzxyjsjx
  • dzxyjsjx
  • 2010年06月21日 12:47
  • 3652

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

类ArrayList的toString()方法的重载 源码分析
  • u013905744
  • u013905744
  • 2015年03月25日 14:31
  • 1518

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

        用动态数组ArrayList实现上面效果。看似简单其实也的确不难,不过有些细节可能会被忽略。我刚看到的时候也没太在意每组数据间的小箭头,一股脑的想到去用动态二维数组来实现,因此写下了下...
  • kamiiyu
  • kamiiyu
  • 2006年06月10日 02:50
  • 5422

java中对toString方法和对控制台输出以及重写toString问题的理解(笔记)

我们都知道,system.out用于控制台输出,便于我们初学者测试,调试程序。接下来有几种不同的情况。 1。输出字符串 (略),比如我们想输出“Hello world”,只需要写system.ou...
  • qq912100012
  • qq912100012
  • 2018年01月12日 16:18
  • 27

Java重写ToString()方法的意义

1、toString()就是是重写,对于一般的对象来说都会有这个方法,其实这个方法的目的,主要就是将对象按字符串的方式输出出来:打个比方,比如一个People类,里边有name,age这两个属性, ...
  • Thinkingcao
  • Thinkingcao
  • 2017年02月13日 10:59
  • 4935
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:巧用重写toString的方法,输出格式的问题留给java帮我解决吧~
举报原因:
原因补充:

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