Ho bisogno di passare parte dei miei progetti da C# a Java. Ma prima di ciò, vorrei confrontare due lingue attentamente e completamente.Espressione lambda in Java?
Per quanto riguarda l'espressione lambda, potrei scrivere codice molto elegante tramite C#, la domanda è come implementare la stessa funzione con garbo in Java? Grazie in anticipo!
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());
}
}
Java ha bisogno di tempo per recuperare il ritardo –
Oddio :(Non solo Java (7) non ha lambda, ma la libreria di raccolta di default (in Java 7) non ha alcun tipo di supporto HoF - niente di paragonabile a LINQ. Ci sono alcune librerie non standard che possono "aiutare" con quelle espressioni di 'Where' (in un modo Java), ma ci vorrà un po 'di "riscrittura della merda a mano" in caso contrario. Penso che la migliore la domanda è ** "Com'è possibile [o meno doloroso] portare questo [semplice] LINQ/Codice Enumerabile a Java?" ** (per evitare le risposte banali, come ricevuto). – user2246674
Ho capito, il modo tradizionale sarà usato per scrivere il codice come sopra in Java. Ad ogni modo, non vedo l'ora che arrivi Java8. –