重载相同的方法来打印不同数据类型的arraylist

Overloading same method to print different data type arraylist

我的任务是重载相同的方法,能够使用相同的方法名称,打印到屏幕,两个数组列表内容的内容。

下面是我试过的代码。但是它不起作用,因为这两种方法具有相同的名称?

import java.util.ArrayList;

public class Tutotrial_2_1 {

public static void main(String[] args){
    //Creating integer type array list
    ArrayList<Integer>listOfAges = new ArrayList<Integer>();
    //Adding items to array list
    listOfAges.add(25);
    listOfAges.add(36);
    listOfAges.add(45);
    listOfAges.add(67);
    listOfAges.add(87);
    listOfAges.add(32);
    listOfAges.add(33);
    listOfAges.add(45);
    
    //Creating double type array list
    ArrayList<Double>listOfMarks = new ArrayList<Double>();
    //Adding items to array list
    listOfMarks.add(25.4);
    listOfMarks.add(36.5);
    listOfMarks.add(4.45);
    listOfMarks.add(55.67);
    listOfMarks.add(55.7);
    listOfMarks.add(32.0);
    listOfMarks.add(33.0);
    listOfMarks.add(45.0);
    
    //Calling display function of integer array
    displayArray(listOfAges);
    displayArray(listOfMarks);
}

//Display fucntion of listOfAges array
public static void displayArray(ArrayList<Integer>list){
    for(Integer indexes : list){
        System.out.println(indexes);
    }
}
public static void displayArray(ArrayList<Double>list){
    for(Double indexes : list){
        System.out.println(indexes);
    }
}

}

由于Java's type erasure,您不能在泛型类型上重载方法。换句话说,您有两个解析为 displayArray(ArrayList) 的方法,因此对于双重声明的方法,您会遇到编译错误。

幸运的是,这里你真的不需要重载方法——因为 Java 中的任何对象都有一个 toString 方法,你可以只用一个方法来接收列表,迭代它, 并打印每一项:

public static void displayArray(List<?> list){
    for (Object indexes : list) {
        System.out.println(indexes);
    }
}

如果我理解你的问题,如果你像这样改变你的方法:

public static void main(String[] args) {
  //Creating integer type array list
  ArrayList<Integer> listOfAges = new ArrayList<Integer>();
  //Adding items to array list
  listOfAges.add(25);
  listOfAges.add(36);
  listOfAges.add(45);
  listOfAges.add(67);
  listOfAges.add(87);
  listOfAges.add(32);
  listOfAges.add(33);
  listOfAges.add(45);

  //Creating double type array list
  ArrayList<Double>listOfMarks = new ArrayList<Double>();
  //Adding items to array list
  listOfMarks.add(25.4);
  listOfMarks.add(36.5);
  listOfMarks.add(4.45);
  listOfMarks.add(55.67);
  listOfMarks.add(55.7);
  listOfMarks.add(32.0);
  listOfMarks.add(33.0);
  listOfMarks.add(45.0);

  //Calling display function of integer array
  displayArray(listOfAges);
  displayArray(listOfMarks);
}

//Display function of listOfAges array
public static <T> void displayArray(ArrayList<T>list){
  for(T indexes : list){
    System.out.println(indexes);
  }
}

应该可以。用作通用类型。