如何在Java中打印出List的所有元素?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Java中打印出List的所有元素?相关的知识,希望对你有一定的参考价值。

我试图打印出List的所有元素,但是它打印的是Object的指针而不是值。

这是我的打印代码......

for(int i=0;i<list.size();i++){
    System.out.println(list.get(i));
} 

谁能帮助我,为什么它不打印元素的价值。

答案

这是一个关于打印列表组件的示例:

public class ListExample {

    public static void main(String[] args) {
        List<Model> models = new ArrayList<>();

        // TODO: First create your model and add to models ArrayList, to prevent NullPointerException for trying this example

        // Print the name from the list....
        for(Model model : models) {
            System.out.println(model.getName());
        }

        // Or like this...
        for(int i = 0; i < models.size(); i++) {
            System.out.println(models.get(i).getName());
        }
    }
}

class Model {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
另一答案
  1. 您没有指定列表包含哪些元素,如果它是primitive data type,那么您可以打印出元素。
  2. 但是如果元素是对象,那么就像Kshitij Mehta所提到的那样,你需要在该对象中实现(覆盖)方法“toString” - 如果它尚未实现 - 并让它从对象中返回一些意义为完整的东西,例如: class Person { private String firstName; private String lastName; @Override public String toString() { return this.firstName + " " + this.lastName; } }
另一答案

我遇到过类似的问题。我的代码:

List<Integer> leaveDatesList = new ArrayList<>();

.....inserted value in list.......

方法1:在for循环中打印列表

for(int i=0;i<leaveDatesList.size();i++){
    System.out.println(leaveDatesList.get(i));
}

方式2:在forEach中打印列表,for循环

for(Integer leave : leaveDatesList){
    System.out.println(leave);
}

方式3:在java 8中打印列表

leaveDatesList.forEach(System.out::println);
另一答案

我编写了一个转储函数,它基本上打印出一个对象的公共成员,如果它没有覆盖toString()。人们可以很容易地将其扩展为呼叫吸气剂。的Javadoc:

使用以下规则将给定对象转储到System.out:

  • 如果Object是Iterable,则转储其所有组件。
  • 如果Object或其中一个超类重写toString(),则转储“toString”
  • 否则,为Object的所有公共成员递归调用该方法
/**
 * Dumps an given Object to System.out, using the following rules:<br>
 * <ul>
 * <li> If the Object is {@link Iterable}, all of its components are dumped.</li>
 * <li> If the Object or one of its superclasses overrides {@link #toString()}, the "toString" is dumped</li>
 * <li> Else the method is called recursively for all public members of the Object </li>
 * </ul>
 * @param input
 * @throws Exception
 */
public static void dump(Object input) throws Exception{
    dump(input, 0);
}

private static void dump(Object input, int depth) throws Exception{
    if(input==null){
        System.out.print("null
"+indent(depth));
        return;
    }

    Class<? extends Object> clazz = input.getClass();
    System.out.print(clazz.getSimpleName()+" ");
    if(input instanceof Iterable<?>){
        for(Object o: ((Iterable<?>)input)){
            System.out.print("
"+indent(depth+1));
            dump(o, depth+1);
        }
    }else if(clazz.getMethod("toString").getDeclaringClass().equals(Object.class)){
        Field[] fields = clazz.getFields();
        if(fields.length == 0){
            System.out.print(input+"
"+indent(depth));
        }
        System.out.print("
"+indent(depth+1));
        for(Field field: fields){
            Object o = field.get(input);
            String s = "|- "+field.getName()+": ";
            System.out.print(s);
            dump(o, depth+1);
        }
    }else{

        System.out.print(input+"
"+indent(depth));
    }
}

private static String indent(int depth) {
    StringBuilder sb = new StringBuilder();
    for(int i=0; i<depth; i++)
        sb.append("  ");
    return sb.toString();
}
另一答案

System.out.println(list);为我工作。

这是一个完整的例子:

import java.util.List;    
import java.util.ArrayList;

public class HelloWorld {
     public static void main(String[] args) {
        final List<String> list = new ArrayList<>();
        list.add("Hello");
        list.add("World");
        System.out.println(list);
     }
}

它将打印[Hello, World]

另一答案
    list.stream().map(x -> x.getName()).forEach(System.out::println);
另一答案

对于String数组的列表

list.forEach(s -> System.out.println(Arrays.toString((String[]) s )));
另一答案

我现在碰巧正在研究这个......

List<Integer> a = Arrays.asList(1, 2, 3);
List<Integer> b = Arrays.asList(3, 4);
List<int[]> pairs = a.stream()
  .flatMap(x -> b.stream().map(y -> new int[]{x, y}))
  .collect(Collectors.toList());

Consumer<int[]> pretty = xs -> System.out.printf("
(%d,%d)", xs[0], xs[1]);
pairs.forEach(pretty);
另一答案

For循环打印列表的内容:

List<String> myList = new ArrayList<String>();
myList.add("AA");
myList.add("BB");

for ( String elem : myList ) {
  System.out.println("Element : "+elem);
}

结果:

Element : AA
Element : BB

如果您想要在一行中打印(仅供参考):

String strList = String.join(", ", myList);
System.out.println("Elements : "+strList);

结果:

Elements : AA, BB
另一答案

尝试覆盖toString()方法,因为您希望元素将是printend。所以打印的方法可以是这样的:

for(int i=0;i<list.size();i++){
    System.out.println(list.get(i).toString());
} 
另一答案
public static void main(String[] args) {
        answer(10,60);

    }
    public static void answer(int m,int k){
        AtomicInteger n = new AtomicInteger(m);
        Stream<Integer> stream = Stream.generate(() -> n.incrementAndGet()).limit(k);
        System.out.println(Arrays.toString(stream.toArray()));
    }
另一答案

以下是紧凑的,并避免示例代码中的循环(并给你很好的逗号):

System.out.println(Arrays.toString(list.toArray()));

但是,正如其他人所指出的那样,如果您没有为列表中的对象实现合理的toString()方法,您将获得您正在观察的对象指针(实际上是哈希码)。无论他们是否在列表中,都是如此。

另一答案
   List<String> textList=  messageList.stream()
                            .map(Message::getText)
                            .collect(Collectors.toList());

        textList.stream().forEach(System.out::println);
        public class Message  {

        String name;
        String text;

        public Message(String name, String text) {
            this.name = name;
            this.text = text;
        }

        public String getName() {
            return name;
        }

      public String getText() {
        return text;
     }
   }
另一答案

从Java 8开始,List继承了一个默认的“forEach”方法,你可以将它与方法引用“System.out :: println”结合起来,如下所示:

list.forEach(System.out::println);
另一答案
System.out.println(list);//toString() is easy and good enough for debugging.

toString()AbstractCollection干净,容易做到这一点。 AbstractListAbstractCollection的子类,因此不需要for循环,也不需要toArray()。

以上是关于如何在Java中打印出List的所有元素?的主要内容,如果未能解决你的问题,请参考以下文章

给定一段Java 代码如下:要打印出list中存储的内容,以下语句正确的是()。(选择二项)

Java 如何打印出List中得值

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

python如何打印所有大于0的元素数据

java中list排序

java中如何打印下面代码list里面的值?解决了加分!