如何创建一个动态返回 ArrayList 的方法?

Posted

技术标签:

【中文标题】如何创建一个动态返回 ArrayList 的方法?【英文标题】:How to create a method that dynamically returns an ArrayList? 【发布时间】:2022-01-05 23:47:25 【问题描述】:

我想创建一个可以完成所有这 4 种方法的工作的方法。该方法必须返回一个ArrayList,其输入参数为int aString strchar cboolean b

该方法必须返回一个数组列表,其中包含元素 int (ax2)String ("new" + str)char (ascii(c) + 1)(下一个 ascii 字符) 而不是boolean b

我尝试从类似的堆栈溢出帖子中寻求帮助,但出现“非静态”错误

public class Program 
    public static void main(String[] args) 
        System.out.println(intoTwo(3));
        System.out.println(newString("Hello"));
        System.out.println(nextChar('c'));
        System.out.println(notFunc(true));
    

    public static int intoTwo(int a) 
        return a * 2;
    

    public static String newString(String str) 
        return "new " + str;
    

    public static char nextChar(char c) 
        int ascii = c;
        return (char)(ascii + 1);
    

    public static boolean notFunc(boolean b) 
        return (!b);
    

程序及其输出的图像:

【问题讨论】:

【参考方案1】:

你可以使用List<Object>,因为Object是java中所有对象的***类,它可以包含任何类型, 如果您采用 4 个不同的参数,那么您可以这样做

private static List<Object> newmethod(int i,char c,Boolean b,String s) 
   return Arrays.asList(i*2,"new"+s....);

如果您还需要输入作为列表,那么您可以使用instanceof 运算符来检查特定对象是否属于/可分配给某种类型, 所以你需要做的就是检查 Object 是否是 String 并为 string 类型做逻辑,对所有其他类型都是一样的。

   private static List<Object> newmethod(List<Object> input)
    List<Object> result = new ArrayList<>();
    for(Object item: input)
       if(item instanceof String)
          result.add("new"+item.toString);
       
       if(item instanceof Integer)
          result.add(2*(int)item);
       
    //other types Boolean and Character logic;
       
       return result;
    

【讨论】:

以上是关于如何创建一个动态返回 ArrayList 的方法?的主要内容,如果未能解决你的问题,请参考以下文章

使用 ArrayList 创建一个动态二维整数数组

创建包含方法的 Web 服务时出错返回 ArrayList 类型

在 Java 中不使用 Arraylist 的情况下为类制作动态数组,并且没有正确教授如何去做

如何将onclick动态添加到arraylist

Java动态数组

从 ArrayList 方法类型返回 ArrayList