不循环打印Arraylist

问题描述 投票:0回答:5

我想在不使用任何类型的循环的情况下打印 Arraylist 中的元素,这在 java 中可能吗?

import java.util.ArrayList;

class Person
{
    String name;
    String role;

    public Person(String name, String role)
    {
        this.name = name;
        this.role = role;
    }
}

class Main
{
    public static void main(String[] args)
    {
        Person person1 = new Person("george","programmer");
        Person person2 = new Person("barack","programmer");
        Person person3 = new Person("ismail","programmer");

        ArrayList <Person> people = new ArrayList <Person>();
        people.add(person1);
        people.add(person2);
        people.add(person3);

        System.out.println(people.get(0));
        System.out.println(people.get(1));
        System.out.println(people.get(2));
    }
}
java arraylist println
5个回答
3
投票

这取决于你如何定义“循环”。可以使用递归方法来完成:

void print( ArrayList<Person> a, int index ) {
   if ( (a != null) && (index < a.size()) ) {
      System.out.println(a.get(index));
      print( a, ++index );
   }
}

然后调用 print(people, 0 );


2
投票

不,这是不可能的。

每种方法都会以某种形式循环遍历数组列表的值。无论是普通的

for
循环还是
forEach
或内置
toString()
- 每种方法都会以某种形式循环或迭代列表的值。


0
投票

无需循环即可一张一张打印 但问题是因为您使用的是对象类型,所以除非您在类中使用 toString 方法,否则无法打印对象 即使你不使用Arraylist,如果你想打印对象,它也不起作用,除非你使用toString方法

    class Main
    {
        public static void main(String[] args)
        {  
            ArrayList<Integer> arrayList = new ArrayList<Integer>();
            arrayList.add(6);
            arrayList.add(3);
            arrayList.add(5);

            System.out.println(arrayList.get(0));
            System.out.println(arrayList.get(1));
            System.out.println(arrayList.get(2));
        }
    } 

0
投票

可能必须让对象调用 tostring 方法来打印数据,否则你将获得对象引用


0
投票

people.forEach(person -> System.out.println(person));

上面的单行代码使用了 Java-8 中引入的流功能。从概念上讲,您仍然在逐个迭代输入元素。但如果您正在寻找的话,它比使用 for 循环更简洁。

© www.soinside.com 2019 - 2024. All rights reserved.