Java中的Lambda表达式?

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

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

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()); } } 

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

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

 final Array a = array(1, 2, 3); final Array b = a.map({int i => i + 42}); arrayShow(intShow).println(b); // {43,44,45} 

目前java不支持Lambda操作,但这将在Java 8中引入。有关进一步的参考站点

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

这是java 8中lambha操作的一个例子

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

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

}

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

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