我有一个包含地址对象的ArrayList。
我如何打印此ArrayList的值,这意味着我要打印Array的内容,在本例中为数字。
我只能使用以下代码来打印出阵列的实际内存地址:
for(int i = 0; i < houseAddress.size(); i++) {
System.out.print(houseAddress.get(i));
}
我有一个包含地址对象的ArrayList。
我如何打印此ArrayList的值,这意味着我要打印Array的内容,在本例中为数字。
我只能使用以下代码来打印出阵列的实际内存地址:
for(int i = 0; i < houseAddress.size(); i++) {
System.out.print(houseAddress.get(i));
}
houseAddress
变量的声明,以及它包含的元素的一些示例代码。
Answers:
Arrays.toString(list.toArray())
Arrays.toString(houseAddress.toArray())
toString()
以打印其元素的内容。因此,只需list.toString()
打印其toString()
所有元素。所有集合都是如此。
将toString()
方法添加到您的address
班级,然后执行
System.out.println(Arrays.toString(houseAddress));
houseAddress
参数作为参数,Arrays.toString()
因为它不是Array类型的。
由于您尚未为toString()
方法提供自定义实现,因此它将调用默认值,该默认值将为该对象打印内存中的地址
您的Address类中的解决方案覆盖了toString()
像这样的方法
public class Address {
int addressNo ;
....
....
...
protected String toString(){
return Integer.toString(addressNo);
}
现在当你打电话
houseAddress.get(i) in the `System.out.print()` method like this
System.out.print( houseAddress.get(i) )
在toString()
对的Address
对象会被称为
假设您有一个这样的数字清单
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
如果您打印列表
//method 1
// Conventional way of printing arraylist
for (int number : numbers) {
System.out.print(number);
}
//method 2
// Lambda Expression to print arraylist
numbers.forEach((Integer value) -> System.out.print(value));
//method 3
// Lambda Expression to print arraylist
numbers.forEach(value -> System.out.print(value));
//method 4
// Lambda Expression (method reference) to print arraylist
numbers.forEach(System.out::print);
从Java 8开始,您可以从Iterable接口使用forEach()方法。
这是默认方法。作为参数,它接受一个类的对象,该对象实现了功能接口Consumer。您可以
通过三种方式在本地实现Consumer:使用匿名类:
houseAddress.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
lambda表达式:
houseAddress.forEach(s -> System.out.println(s));
或使用方法参考:
houseAddress.forEach(System.out::print);
这种打印方式适用于Iterable接口的所有实现。
所有这些,为您提供了定义如何打印元素的方式,而toString()则以一种格式强制执行打印列表。
public static void main(String[] args) {
List<Moyen> list = new ArrayList<Moyen>();
Moyen m1 = new Moyen();
m1.setCodification("c1");
m1.setCapacityManager("Avinash");
Moyen m2 = new Moyen();
m2.setCodification("c1");
m2.setCapacityManager("Avinash");
Moyen m3 = new Moyen();
m3.setCodification("c1");
m3.setCapacityManager("Avinash");
list.add(m1);
list.add(m2);
list.add(m3);
System.out.println(Arrays.toString(list.toArray()));
}
打印ArrayList的最简单方法是使用toString
List<String> a=new ArrayList<>();
a.add("111");
a.add("112");
a.add("113");
System.out.println(a.toString());
[111、112、113]
您可以使用迭代器。这是这里要做的最简单,最没有争议的事情。说houseAddress
有数据类型的值String
Iterator<String> iterator = houseAddress.iterator();
while (iterator.hasNext()) {
out.println(iterator.next());
}
注意:正如我在另一个答案中提到的,您甚至可以为此使用增强的for循环
如果将@Override公共字符串toString()用作注释,则结果将与您相同。但是,如果您实现toString()方法,它将起作用。
公共类PrintingComplexArrayList {
public static void main(String[] args) {
List houseAddress = new ArrayList();
insertAddress(houseAddress);
printMe1(houseAddress);
printMe2(houseAddress);
}
private static void insertAddress(List address)
{
address.add(new Address(1));
address.add(new Address(2));
address.add(new Address(3));
address.add(new Address(4));
}
private static void printMe1(List address)
{
for (int i=0; i<address.size(); i++)
System.out.println(address.get(i));
}
private static void printMe2(List address)
{
System.out.println(address);
}
}
类地址{private int addr; 公共地址(int i){addr = i; }
@Override public String toString()
{
Integer iAddr = new Integer (addr);
return iAddr.toString();
}
}
您甚至可以使用增强的for循环或迭代器,例如:
for (String name : houseAddress) {
System.out.println(name);
}
您可以将其更改为任何数据类型houseAddress
,并且可以避免不必要的转换
JSON格式
另一种解决方案可能是将列表转换为JSON格式并打印Json-String。优点是格式良好且易于阅读的Object-String,而无需实现toString()
。Additionaly它可以用于任何其他Object
或Collection
实时运行。
使用Google的Gson的示例:
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
...
public static void printJsonString(Object o) {
GsonBuilder gsonBuilder = new GsonBuilder();
/*
* Some options for GsonBuilder like setting dateformat or pretty printing
*/
Gson gson = gsonBuilder.create();
String json= gson.toJson(o);
System.out.println(json);
}
如果您只想在控制台上打印元素,则可以使用打印格式。
for(int i = 0; i < houseAddress.size(); i++) {
System.out.printf("%s", houseAddress.get(i));
}
假设houseAddress.get(i)
是ArrayList
,你可以添加toString()
后ArrayList
:
for(int i = 0; i < houseAddress.size(); i++) {
System.out.print(houseAddress.get(i).toString());
}
一个一般的例子:
ArrayList<Double> a = new ArrayList();
a.add(2.);
a.add(32.);
System.out.println(a.toString());
// output
// [2.0, 32.0]
这是一个在ArrayList中添加值并打印ArrayList值的简单代码
public class Samim {
public static void main(String args[]) {
// Declare list
List<String> list = new ArrayList<>();
// Add value in list
list.add("First Value ArrayPosition=0");
list.add("Second Value ArrayPosition=1");
list.add("Third Value ArrayPosition=2");
list.add("Fourth Value ArrayPosition=3");
list.add("Fifth Value ArrayPosition=4");
list.add("Sixth Value ArrayPosition=5");
list.add("Seventh Value ArrayPosition=6");
String[] objects1 = list.toArray(new String[0]);
// Print Position Value
System.err.println(objects1[2]);
// Print All Value
for (String val : objects1) {
System.out.println(val);
}
}
}