【问题标题】:How to print a string from an ArrayList of an ArrayList如何从 ArrayList 的 ArrayList 打印字符串
【发布时间】:2020-12-29 13:20:05
【问题描述】:


import java.util.*;
import java.lang.*;
import java.io.*;


class Adventurers
{
    public static void main (String[] args) throws java.lang.Exception
    {
    public static void main (String[] args) throws java.lang.Exception{
            
    ArrayList<String> friends = new ArrayList<>(Arrays.asList(new String[]{"Danny", "Benni", "Marcus", "Pat"}));
    ArrayList<String> places = new ArrayList<>(Arrays.asList(new String[]{"Paris", "Brasil", "Miami", "Jamaica"}));
    ArrayList<String> gifts = new ArrayList<>(Arrays.asList(new String[]{"Snacks", "Photos", "Instrument", "Whine"}));
    ArrayList<String> events = new ArrayList<>(Arrays.asList(new String[]{"Zombie Tag ", "Bar tour"}));
    ArrayList<String> people = new ArrayList<>(Arrays.asList(new String[]{"Karen ", " Ryu ", " Darth Vader"}));
    ArrayList<String> animals = new ArrayList<>(Arrays.asList(new String[]{"Dog ", " Cat ", " Bird "}));
    
    ArrayList[] objectives = new ArrayList<>(Arrays.asList(new String[] {places, gifts, events, people, animals});
    
    
    

    

    for(String friend : friends){
        System.out.println(objectives.get(rand.nextInt(objectives.size())).get(rand.nextInt(this.size)));
        
     }
}
    }
}

您好,我正在尝试打印来自主 ArrayList 的 ArrayList 的随机消息,因为我正在尝试打印每个朋友的目标列表(另一个列表)。我想出了如何单独打印它们,但我想知道是否可以从主 ArrayList 打印字符串。

【问题讨论】:

  • 您在该代码中的任何位置都没有 "an ArrayList of an ArrayList"。请重试。

标签: java arrays string arraylist random


【解决方案1】:

您的代码有多个小的语法错误。我已经修复了它们:

import java.util.*;
import java.lang.*;
import java.io.*;


public class Adventurers
{
    public static void main (String[] args) throws java.lang.Exception{
            
    ArrayList<String> friends = new ArrayList<>(Arrays.asList(new String[]{"Danny", "Benni", "Marcus", "Pat"}));
    ArrayList<String> places = new ArrayList<>(Arrays.asList(new String[]{"Paris", "Brasil", "Miami", "Jamaica"}));
    ArrayList<String> gifts = new ArrayList<>(Arrays.asList(new String[]{"Snacks", "Photos", "Instrument", "Whine"}));
    ArrayList<String> events = new ArrayList<>(Arrays.asList(new String[]{"Zombie Tag ", "Bar tour"}));
    ArrayList<String> people = new ArrayList<>(Arrays.asList(new String[]{"Karen ", " Ryu ", " Darth Vader"}));
    ArrayList<String> animals = new ArrayList<>(Arrays.asList(new String[]{"Dog ", " Cat ", " Bird "}));
    
    ArrayList[] objectives = new ArrayList<>(Arrays.asList(new String[] {places, gifts, events, people, animals}));
    
    
    

    

    for(String friend : friends){
        System.out.println(objectives.get(rand.nextInt(objectives.size())).get(rand.nextInt(this.size)));
        
     }
}
}

然后您可以参考this question 解决问题。

【讨论】:

    【解决方案2】:

    您使用的是什么版本的java,从版本8开始您可以使用如下流:

    String value = friends.stream().flatMap(e -> e.stream()).findAny().get();
    

    【讨论】:

    • 我认为您忽略了问题中最突出的错误 - 语法。
    • 流?我还没有使用流,所以我必须更多地研究它。
    • 我没有按语法走,而是回答了如何获取嵌套数据
    • @FallenUser 你是对的,因为通常我会弄清楚我想要做什么然后尝试找出让我得到我想要的语法
    【解决方案3】:

    您的代码有多个小的语法错误。我认为您需要学习更多的java知识。

    public static void main (String[] args){
    
        Random rand = new Random();
        ArrayList<String> friends = new ArrayList<>(Arrays.asList("Danny", "Benni", "Marcus", "Pat"));
        ArrayList<String> places = new ArrayList<>(Arrays.asList("Paris", "Brasil", "Miami", "Jamaica"));
        ArrayList<String> gifts = new ArrayList<>(Arrays.asList("Snacks", "Photos", "Instrument", "Whine"));
        ArrayList<String> events = new ArrayList<>(Arrays.asList("Zombie Tag ", "Bar tour"));
        ArrayList<String> people = new ArrayList<>(Arrays.asList("Karen ", " Ryu ", " Darth Vader"));
        ArrayList<String> animals = new ArrayList<>(Arrays.asList("Dog ", " Cat ", " Bird "));
        List[] objectives = new List[]{Arrays.asList(places, gifts, events, people, animals)};
    
        for(String friend : friends){
            System.out.println(objectives[rand.nextInt(objectives.length)].get(rand.nextInt(friend.length())));
        }
    }
    

    【讨论】:

      【解决方案4】:
      import java.util.Arrays;
      import java.util.List;
      import java.util.Random;
      
      public class Main {
      
          public static void main(String[] args) {
              Random rand = new Random();
              List<String> friends = Arrays.asList("Danny", "Benni", "Marcus", "Pat");
              List<String> places = Arrays.asList("Paris", "Brasil", "Miami", "Jamaica");
              List<String> gifts = Arrays.asList("Snacks", "Photos", "Instrument", "Whine");
              List<String> events = Arrays.asList("Zombie Tag", "Bar tour");
              List<String> people = Arrays.asList("Karen", "Ryu", "Darth Vader");
              List<String> animals = Arrays.asList("Dog", "Cat", " Bird");
      
              List<List<String>> lists = Arrays.asList(places, gifts, events, people, animals);
      
              for (String friend : friends) {
                  System.out.print(friend + ": ");
                  boolean isFirst = false;
                  for (List<String> list : lists) {
                      if (!isFirst) {
                          isFirst = true;
                      } else {
                          System.out.print(", ");
                      }
                      System.out.print(list.get(rand.nextInt(list.size())));
                  }
                  System.out.println();
              }
          }
      }
      

      老实说,我花了更多时间弄清楚你最初的目的。经过一番疯狂的猜测,我认为这就是你想要的。

      有一些语法错误和一些不必要的嵌套函数调用,我为您删除它们。请仔细查看差异。

      另外,我想还有一点我们都需要明白:如果需要使用某个内置Object,首先要弄清楚它的内置方法;如果要调用内置方法,首先要知道它的参数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-02
        • 2017-09-24
        • 1970-01-01
        • 1970-01-01
        • 2021-11-02
        • 2019-09-04
        • 1970-01-01
        • 2013-02-28
        相关资源
        最近更新 更多