6

我需要将部分项目从 C# 切换到 Java。但在此之前,我想仔细、完整地比较两种语言。

关于 lambda 表达式,我可以通过 C# 编写非常优雅的代码,问题是如何在 Java 中优雅地实现相同的功能?提前致谢!

class Program
{
    enum Gender
    {
        Male,
        Female
    }
    class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public Gender Gender { get; set; }
        public override string ToString()
        {
            return string.Format("Id: {0}, Name: {1}, Age: {2}, Gender: {3}", Id, Name, Age, Gender);
        }
    }

    static void Main(string[] args)
    {
        var students = new[] { 
            new Student { Id = 1, Name = "Nathanial Archibald", Age = 18, Gender = Gender.Male },
            new Student { Id = 2, Name = "Georgina Sparks", Age = 19, Gender = Gender.Female },
            new Student { Id = 3, Name = "Daniel Humphrey", Age = 20, Gender = Gender.Male },
            new Student { Id = 4, Name = "Jenny Humphrey", Age = 17, Gender = Gender.Female },
        };

        var men = students.Where(p => p.Gender == Gender.Male);
        var ageAbove18 = students.Where(p => p.Age > 18);
        var humphrey = students.Where(p => p.Name.EndsWith("Humphrey"));
        var idGT1orderbyAge = students.Where(p => p.Id > 1).OrderBy(p => p.Age);

        foreach (var s in men) Console.WriteLine(s.ToString());
        foreach (var s in ageAbove18) Console.WriteLine(s.ToString());
        foreach (var s in humphrey) Console.WriteLine(s.ToString());
        foreach (var s in idGT1orderbyAge) Console.WriteLine(s.ToString());
    }
}
4

4 回答 4

3

版本 8 中的 Java 可能支持 lambda。;)

您可以使用本网站。看这个例子:

final Array<Integer> a = array(1, 2, 3);  
final Array<Integer> b = a.map({int i => i + 42});  
arrayShow(intShow).println(b); // {43,44,45}  
于 2013-07-03T03:47:33.563 回答
3

目前 java 不支持 Lambda 操作,但这将在 Java 8 中引入。更多参考站点

但是,如果您想切换到 Java,这是一个不错的选择,但只要不支持 lambda 操作,您就可以创建您的方法来执行相同的任务,并在 java 8 发布后转移到 lambha 操作

这是 java 8 中的 Lambha 操作示例

于 2013-07-03T03:49:31.460 回答
1

Java 8 支持 Lambda 表达式。以下是如何在 java 中使用 lambda 表达式对学生列表进行排序

private static void sort(List<Student> students) {
Comparator<Student> rollNumberComparator = (student1, student2) -> 
    student1.getRollNumber().compareTo(student2.getRollNumber());

Collections.sort(students,rollNumberComparator);

}

您可以参考: http ://www.groupkt.com/post/088a8dea/lambda-expressions---java-8-feature.htm

于 2014-08-09T05:53:56.757 回答
0

Lambda 表达式不是当前 Java (1.7) 版本的一部分,它是 Java 8 的一个特性,至少要到明年才会发布

于 2013-07-03T03:46:24.107 回答