我只是尝试使用我制作的名称类来打印ArrayList。
这是方法
private static ArrayList createActorList() {
ArrayList<Name> actors = new ArrayList<>();
actors.add(new Name("Tom","Cruise"));
actors.add(new Name("Sylvester","Stallone"));
actors.add(new Name("Michael J.","Fox"));
actors.add(new Name("Arnold","Schwarzenegger"));
actors.add(new Name("Al","Pacino"));
actors.add(new Name("Harrison","Ford"));
actors.add(new Name("Matt","Dillon"));
actors.add(new Name("Michael","Biehn"));
actors.add(new Name("Emilio","Estevez"));
actors.add(new Name("Rob","Lowe"));
return actors;
}
名称类 - 名称类适用于调用时打印名称的其他程序。
public class Name implements NameADT{
public String first;
public String last;
public String natural;
public String formal;
public String check;
public Name(String firstName, String lastName) {
first = firstName;
last = lastName;
}
@Override
public String first() {
return first;
}
@Override
public String last() {
return last;
}
@Override
public String natural() {
natural = first + " " + last;
return natural;
}
@Override
public String formal() {
formal = last + ", " + first;
return formal;
}
我打印时的输出
演员......
simplethings.Name@7852e922<br>
simplethings.Name@4e25154f<br>
simplethings.Name@70dea4e<br>
simplethings.Name@5c647e05<br>
simplethings.Name@33909752<br>
simplethings.Name@55f96302<br>
simplethings.Name@3d4eac69<br>
simplethings.Name@42a57993<br>
simplethings.Name@75b84c92<br>
simplethings.Name@6bc7c054<br>
答案 0 :(得分:-1)
您的问题在于Java如何存储对象(非原始数据类型)。简而言之,不存储基本数据类型(int
s,double
s,float
等)的变量只保存存储实际数据的地址。这意味着变量只将引用保存到内存中的对象,而不是对象本身。
当您尝试打印Name
对象(计算机存储实际实例的内存中的地址)时,您就会看到这一点。
要解决此问题,您可以覆盖toString()
Object
方法,该方法被隐式调用以将对象转换为字符串以进行打印。在Name
课程中,覆盖它并返回您的名字和姓氏:
@Override
public String toString() {
return first + " " + last;
}
答案 1 :(得分:-2)
问题是因为您正在尝试按原样打印对象。尝试使用列表迭代器并打印名称。类似的东西:
ListIterator<String> itr=al.listIterator();
while(itr.hasNext()){ \\traversing elements in forward direction...
System.out.println(itr.next());
}