RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 677311
Accepted
Владислав
Владислав
Asked:2020-06-09 19:58:59 +0000 UTC2020-06-09 19:58:59 +0000 UTC 2020-06-09 19:58:59 +0000 UTC

java构造函数中的点

  • 772

有一个构造函数

public CustomizedComparator(Comparator<T>... comparators) {
        this.comparators = comparators;
    }

问题是,其中的三个点是什么意思?

java
  • 3 3 个回答
  • 10 Views

3 个回答

  • Voted
  1. Best Answer
    iksuy
    2020-06-09T20:11:35Z2020-06-09T20:11:35Z

    这是 类型的可变参数构造函数Comparator<T>。

    在您的班级中,该字段this.comparators可能有一个类型Comparator<T>[]——即一个比较器数组。

    例如,您可以通过以下方式调用此类构造函数:

    CustomizedComparator();

    CustomizedComparator(comparator);

    CustomizedComparator(intCompataror, longComparator, stringComparator);

    等等。

    这本质上是将数组传递给方法/构造函数的语法糖。

    • 8
  2. Vladimir Glinskikh
    2020-06-09T20:14:59Z2020-06-09T20:14:59Z

    JDK 5中添加了新功能,可以更轻松地创建采用可变数量参数的方法。此功能称为varargs.

    术语的缩写variable-length arguments- 可变长度参数。

    采用可变数量参数的方法称为可变元数方法,或简称为方法varargs。

    例如

    • 5
  3. Владислав
    2020-06-09T20:55:32Z2020-06-09T20:55:32Z

    感谢您的澄清和答复。我在实践中尝试过,很方便。

    public class Solution {
        public static void main(String[] args) {
            ArrayList<Woman> women = new ArrayList<Woman>();
            women.add(new Woman("Катя", "Катина", 18));
            women.add(new Woman("Маша", "Машина", 21));
            women.add(new Woman("Катя", "Сакина", 5));
    
            Comparator<Woman> compareByName = new Comparator<Woman>() {
                public int compare(Woman o1, Woman o2) {
                    return o1.name.compareTo(o2.name);
                }
            };
    
            Comparator<Woman> compareByHeight = new Comparator<Woman>() {
                public int compare(Woman o1, Woman o2) {
                    return o1.age - o2.age;
                }
            };
    
            Comparator<Woman> compareBySurname = new Comparator<Woman>() {
                public int compare(Woman o1, Woman o2) {
                    return o1.surname.compareTo(o2.surname);
                }
            };
    
            //Collections.sort(women, compareByHeight);
    
            CustomizedComparator<Woman> customizedComparator = new CustomizedComparator<Woman>(compareByName, compareByHeight);
            Collections.sort(women, customizedComparator);
            for (Woman w : women) {
                System.out.println(w.name + " " + w.surname + " " + w.age);
            }
        }
    
        public static class CustomizedComparator<T> implements Comparator<T> {
            private Comparator<T>[] comparators;
    
            public CustomizedComparator(Comparator<T>... comparators) {
                this.comparators = comparators;
            }
    
            @Override
            public int compare(T o1, T o2) {
                int result = 0;
                for (int i = 0; i < comparators.length; i++) {
                    result = comparators[i].compare(o1, o2);
                    if (result != 0) {
                        break;
                    }
                }
                return result;
            }
        }
    
        public static class Woman {
            public String name;
            public String surname;
            public int age;
    
            public Woman(String name, String surname, int age) {
                this.age = age;
                this.name = name;
                this.surname = surname;
            }
        }
    }
    
    • 4

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    Python 3.6 - 安装 MySQL (Windows)

    • 1 个回答
  • Marko Smith

    C++ 编写程序“计算单个岛屿”。填充一个二维数组 12x12 0 和 1

    • 2 个回答
  • Marko Smith

    返回指针的函数

    • 1 个回答
  • Marko Smith

    我使用 django 管理面板添加图像,但它没有显示

    • 1 个回答
  • Marko Smith

    这些条目是什么意思,它们的完整等效项是什么样的

    • 2 个回答
  • Marko Smith

    浏览器仍然缓存文件数据

    • 1 个回答
  • Marko Smith

    在 Excel VBA 中激活工作表的问题

    • 3 个回答
  • Marko Smith

    为什么内置类型中包含复数而小数不包含?

    • 2 个回答
  • Marko Smith

    获得唯一途径

    • 3 个回答
  • Marko Smith

    告诉我一个像幻灯片一样创建滚动的库

    • 1 个回答
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Алексей Шиманский 如何以及通过什么方式来查找 Javascript 代码中的错误? 2020-08-03 00:21:37 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5