java - 为什么我们应该在 Java 中使用特定类型的 List

标签 java methods arraylist static format

我目前正在学习 Java 类(class),本类(class)涵盖通过 ArrayList对象通过静态方法。在第一个静态方法中,您会看到 ArrayList只需声明为 ArrayList ,以及它的名称。第一个静态方法显示数组中的所有元素。第二个静态方法更改 ArrayList 的元素。声明 ArrayList 时在此方法中,必须将其声明为 ArrayList<Integer>用于修改目的。为什么会这样,为什么会有不同?感谢任何愿意阐明这一点的人。

import java.util.ArrayList;

public class Chap11Part5
{
    public static void main(String[] args)
    {

        ArrayList<Integer> numbers = new ArrayList<Integer>();

        //For-Loop to create elements for the ArrayList
        for (int i = 1; i < 11; ++i)
            numbers.add(i);

        display(numbers); //Display Elements
        change(numbers, 5); //Change Elements (See "change" method)
        display(numbers); //Display New Results


    }

    //Loop to display elements of ArrayList
    static void display(ArrayList arr) {
        for(int i = 0; i < arr.size(); ++i)
            System.out.print(arr.get(i) + " ");
        System.out.println();
    }
    //Loop to change elements of ArrayList
    static void change(ArrayList<Integer> arr, int amount) {
        int value;
        for(int i = 0; i < arr.size(); ++i) {
            value = arr.get(i);
            arr.set(i, value + amount);
        }
    }

}

最佳答案

<>语法称为 generics - 它允许您限制集合包含的元素类型,并通过此类型引用它们。这不是必需的,只是更方便。

例如,您可以编写第二个方法而不指定任何泛型,但您必须自己处理转换:

static void change(ArrayList arr, int amount) {
    int value;
    for(int i = 0; i < arr.size(); ++i) {
        value = (Integer) arr.get(i); // explicit casting here. Yuck!
        arr.set(i, value + amount);
    }
}

关于java - 为什么我们应该在 Java 中使用特定类型的 List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30603429/

相关文章:

java - 设计链表 - Leetcode #707 - 得到错误的输出

java - SharedPreferences - OnSharedPreferenceChangeListener

c++ - <function> 不是 <class> 的成员

java - 尝试创建错误检查方法,以使计数器在计数器为0时不递减

java - Java中使用数组计算数据表中行的平均值

java - 检查 ArrayList 中的数组元素是否包含特定值

java - 如何检查 ArrayList 中是否存在包含 ArrayList 的值

java - 与执行者共享ApplicationContext

java - OpenGL ES 应用程序和运行 native Java 代码

java - 确定两个数组列表中没有不同项目的代码