在本文中,我们将详细介绍在C#中,带有lambdas的Enumerable.Select的Java等效项是什么?的各个方面,并为您提供关于c#lambdaselect的相关解答,同时,我们也将为您带来
在本文中,我们将详细介绍在C#中,带有lambdas的Enumerable.Select的Java等效项是什么?的各个方面,并为您提供关于c# lambda select的相关解答,同时,我们也将为您带来关于.NET的ManualResetEvent和WaitHandle的Java等效项、c# – IEnumerable.Cast()vs在IEnumerable.Select()中的投射、c# – IEnumerable与IObservable的不同之处是什么?、c# – 我应该投射在我的lambda还是投射IEnumerable?的有用知识。
本文目录一览:- 在C#中,带有lambdas的Enumerable.Select的Java等效项是什么?(c# lambda select)
- .NET的ManualResetEvent和WaitHandle的Java等效项
- c# – IEnumerable.Cast()vs在IEnumerable.Select()中的投射
- c# – IEnumerable与IObservable的不同之处是什么?
- c# – 我应该投射在我的lambda还是投射IEnumerable?
在C#中,带有lambdas的Enumerable.Select的Java等效项是什么?(c# lambda select)
假设我在C#中有一个对象:
public class Person{ public string Name{get;set;} public int Age{get;set;}}
要在C#中从此列表中选择名称,请执行以下操作:
List<string> names = person.Select(x=>x.Name).ToList();
在Java 8中我将如何做同样的事情?
答案1
小编典典如果您有类似的人员列表,List<Person> persons;
您可以说
List<String> names =persons.stream().map(x->x.getName()).collect(Collectors.toList());
或者
List<String> names =persons.stream().map(Person::getName).collect(Collectors.toList());
但是,收集到一个List
或其他Collection
被intented与传统的API只在你需要这样的使用Collection
。否则,您将继续使用流的操作,因为您可以使用a做Collection
更多的事情,而无需中间存储String
s,例如
persons.stream().map(Person::getName).forEach(System.out::println);
.NET的ManualResetEvent和WaitHandle的Java等效项
我想知道Java是否提供了.NET的ManualResetEvent和WaitHandle类的等效类,因为我想编写代码,除非触发事件,否则它将在给定的超时时间内阻止。
据我所知,WaitHandle和ManualResetEvent的.NET类提供了一个不错的,无麻烦的接口,据我所知,该接口也是线程安全的,那么Java必须提供什么?
c# – IEnumerable.Cast()vs在IEnumerable.Select()中的投射
对于一个整数,它只是(char)我,所以总是有collection.Select(i =>(char)i),但我认为这将是一个更清洁的使用collection.Cast().
任何人都可以解释为什么当我使用collection.Cast< char>()而不是与collection.Select(i =>(char)i)时,我得到一个InvalidCastException?
编辑:有趣的是,当我调用collection.OfType< char>()我得到一个空集.
解决方法
该方法在非通用IEnumerable接口上运行,因此它们基本上是从IEnumerable< object>到IEnumerable< T> ;.所以,你不能使用Cast< T>的原因从IEnumerable< int>到IEnumerable< char>这是同样的原因,你不能把一个Boxed int到一个char.
基本上,Cast< char>在您的示例中失败,因为以下失败:
object ascii = 65; char ch = (char)ascii; <- InvalidCastException
有关更多详情,请参阅Jon Skeet的优秀EduLinq post.
c# – IEnumerable与IObservable的不同之处是什么?
我的问题来自于我正在从文件中读取行的测试.该文件总共约为6Mb.
标准时间:4.7s,行:36587
Rx拍摄时间:0.68秒,行数:36587
Rx如何能够大量改进文件中每条线的正常迭代?
private static void ReadStandardFile() { var timer = Stopwatch.StartNew(); var linesProcessed = 0; foreach (var l in ReadLines(new FileStream(_filePath,FileMode.Open))) { var s = l.Split(','); linesProcessed++; } timer.Stop(); _log.DebugFormat("Standard Time Taken: {0}s,lines: {1}",timer.Elapsed.ToString(),linesProcessed); } private static void ReadRxFile() { var timer = Stopwatch.StartNew(); var linesProcessed = 0; var query = ReadLines(new FileStream(_filePath,FileMode.Open)).ToObservable(); using (query.Subscribe((line) => { var s = line.Split(','); linesProcessed++; })); timer.Stop(); _log.DebugFormat("Rx Time Taken: {0}s,linesProcessed); } private static IEnumerable<string> ReadLines(Stream stream) { using (StreamReader reader = new StreamReader(stream)) { while (!reader.EndOfStream) yield return reader.ReadLine(); } }
解决方法
您可以通过执行一些预热运行或在测试每个文件之前使用File.copy将输入文件复制到临时文件来改进此基准测试.这样文件就不会“热”,你会得到一个公平的比较.
c# – 我应该投射在我的lambda还是投射IEnumerable?
考虑以下两行(据我所知)产生相同的结果:
var option1 = items.Select(item => new MyClass(item)).Cast<IMyClass>().ToList() var option2 = items.Select(item => new MyClass(item) as IMyClass).ToList()
在我看来,#1选项将需要一个双重枚举,一次将所有项目投射到我的界面,一次产生列表.如果我是对的,那么选项#2会更聪明.然而,我从来没有看到任何代码使用的选项#2,而且我倾向于假设我不够聪明地提出一些聪明的东西,其余的C#社区没有.
在旁注中,我认为选项2更美观,但这只是我.
我的问题是:是我的选择#2一个更好的想法,我认为是?有没有什么问题我失踪或其他原因我想要坚持选项#1?或者我可能比较两个愚蠢的想法,当有一个更智能的第三个,我完全失踪?
解决方法
var option3 = items.Select<Foo,IMyClass>(item => new MyClass(item)) .ToList()
或者,不要使用,只能正常投掷:
var option4 = items.Select(item => (IMyClass) new MyClass(item)) .ToList()
这两个都比使用Cast更清晰.
呵呵,和.NET 4(由于协方差)的C#4,你可以在ToList调用中放一个类型参数:
var option5 = items.Select(item => new MyClass(item)) .ToList<IMyClass>()
我们今天的关于在C#中,带有lambdas的Enumerable.Select的Java等效项是什么?和c# lambda select的分享就到这里,谢谢您的阅读,如果想了解更多关于.NET的ManualResetEvent和WaitHandle的Java等效项、c# – IEnumerable.Cast()vs在IEnumerable.Select()中的投射、c# – IEnumerable与IObservable的不同之处是什么?、c# – 我应该投射在我的lambda还是投射IEnumerable?的相关信息,可以在本站进行搜索。
本文标签: