gpt4 book ai didi

java - ArrayList、static 和 this 在 Java 中如何工作?

转载 作者:行者123 更新时间:2023-12-01 07:14:18 33 4
gpt4 key购买 nike

我正在浏览这篇文章Java Sorting: Comparator vs Comparable Tutorial ,并对此有一些疑问。

List<Employee> col = new ArrayList<Employee>();

col.add(new Employee(5, "Frank", 28));
col.add(new Employee(1, "Jorge", 19));
col.add(new Employee(6, "Bill", 34));
col.add(new Employee(3, "Michel", 10));
col.add(new Employee(7, "Simpson", 8));
col.add(new Employee(4, "Clerk", 16));
col.add(new Employee(8, "Lee", 40));
col.add(new Employee(2, "Mark", 30));

return col;
  1. 这是一个 Employee 对象的 ArrayList。我可以在此员工对象中添加多少个项目?我可以做这样的事情吗?

    col.add(new Employee(5, "Frank", 28, "asas", "asas"));

    这基本上是一个对象数组,例如 Array[0] 包含所有这些。我实际上正在尝试通过 ArrayList 访问这些对象数组。

  2. 为什么 printList 是静态的?我这里还可以有其他类型吗?

     private static void printList(List<Employee> list) {
    System.out.println("EmpId\tName\tAge");
    for (Employee e: list) {
    System.out.println(e.getEmpId() + "\t" + e.getName() + "\t" + e.getAge());
    }
    }
  3. 比较时,thiso 代表什么?

    public int compareTo(Employee o) {
    return this.empId - o.empId;
    }

    这里的this是什么意思?

最佳答案

how many items can i add?

您可以将项目添加到列表中,直到 Java VM 内存耗尽。没有人为的限制。

can i do something like this?

col.add(new Employee(5, "Frank", 28, "asas", "asas"))

不,因为 Employee 没有接受这些参数的构造函数。但你可以

col.add(new Employee(5, "Frank", 28));

这会在列表中为您提供两个非常相似但不相同的实例(它们不相同,因为它们位于内存中的不同位置;它们相似,因为所有字段都具有相同的值)。

Why does the printList made static?

因此可以从静态方法 main() 调用它,而无需创建 TestEmployeeSort 实例

what does this represent and o represent?

排序算法将选择列表中的两项,并对其中一项调用 compareTo(),并将另一项作为参数。前者将是 this,后者将在 o 中。

这样,排序算法不需要了解太多关于它比较的对象的信息。

优点是可以轻松地使对象具有可比性。缺点是列表不能包含 null 指针或非 Employee 实例。

如果这对您不起作用,您可以创建一个 Comparator,它也有一个 compareTo 方法,但它需要两个参数。

关于java - ArrayList、static 和 this 在 Java 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6995857/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com