本文将分享Java8中的map的详细内容,并且还将对和flatMap进行详尽解释,此外,我们还将为大家带来关于Application.Run()和Form.ShowDialog()有什么区别?、Bit
本文将分享Java 8中的map的详细内容,并且还将对和flatMap进行详尽解释,此外,我们还将为大家带来关于Application.Run()和Form.ShowDialog()有什么区别?、Bitmap.Clone()和新的Bitmap(Bitmap)有什么区别?、bool()和operator.truth()之间有什么区别?、flutter中的runApp(new MyApp())和runApp(new MaterialApp())有什么区别?的相关知识,希望对你有所帮助。
本文目录一览:- Java 8中的map()和flatMap()方法之间有什么区别?(java map flatmap 区别)
- Application.Run()和Form.ShowDialog()有什么区别?
- Bitmap.Clone()和新的Bitmap(Bitmap)有什么区别?
- bool()和operator.truth()之间有什么区别?
- flutter中的runApp(new MyApp())和runApp(new MaterialApp())有什么区别?
Java 8中的map()和flatMap()方法之间有什么区别?(java map flatmap 区别)
在Java 8中,Stream.map()
和Stream.flatMap()
方法之间有什么区别?
答案1
小编典典双方map并flatMap
可以应用到Stream<T>
他们都回报Stream<R>
。不同之处在于,该map运算为每个输入值生成一个输出值,而该flatMap
运算为每个输入值生成任意数量(零个或多个)的值。
这反映在每个操作的参数中。
该map操作采用一个Function
,对输入流中的每个值调用,并产生一个结果值,该结果值发送到输出流。
该flatMap
操作采用的功能在概念上要消耗一个值并产生任意数量的值。但是,在Java中,方法返回任意数量的值很麻烦,因为方法只能返回零或一个值。可以想象一个API,其中的映射器函数flatMap
需要一个值并返回一个数组或一个List
值,然后将其发送到输出。鉴于这是流库,一种表示任意数量的返回值的特别合适的方法是使映射器函数本身返回流!映射器返回的流中的值将从流中排出,并传递到输出流。每次对映射器函数的调用返回的值的“聚集”在输出流中根本没有被区分,因此输出被认为是“扁平化的”。
典型的应用是的映射功能flatMap
,以回报Stream.empty()
,如果要发送零个值,或者类似的东西Stream.of(a, b, c)
,如果要返回几个值。但当然可以返回任何流。
Application.Run()和Form.ShowDialog()有什么区别?
在我的应用程序中,如果登录成功,我想先显示一个登录表单,然后显示主表单。目前,我正在执行以下操作:
var A = new LoginForm();if ( A.ShowDialog() == DialogResult.OK ) Application.Run(new MainForm());
但是后来我开始怀疑-这是什么意思Application.Run()
?为什么不这样做(newMainForm()).ShowDialog()
呢?有什么不同?而实现我想要的目标的正确方法是什么?
答案1
小编典典Application.Run(Form)
在当前线程上启动消息循环并显示指定的形式。消息循环使表单能够接收Windows消息(例如,按键,鼠标单击,绘画无效),以使其显示响应性并与用户进行交互。当你调用ShowDialog()
一个Form
实例,它实际上做了类似的事情,并为在其上形成一个模式消息循环ShowDialog
被调用。
两次调用之间没有太大区别。Application.Run
确实添加了一些额外的事件处理,使您可以在关闭主窗体时整理一些资源(请参阅Application.ThreadExit)。
建议使用WinForms应用程序启动方法Application.Run
,但是我怀疑这更多是一种约定,而不是一条规则。使用最大的理由Application.Run
是,如果您想打开多个非模式表单。您可以使用:
new Form().Show();new Form().Show();Application.Run();
使用该ShowDialog()
方法无法实现此目的,因为其中一种形式必须是模态的。
至于您如何显示登录表单然后如果成功登录则显示主表单的问题,我认为您可以使用:
if (new LoginForm().ShowDialog() == DialogResult.OK){ Application.Run(new MainForm());}
另一种方法是自己做管道MainForm
,LoginForm
如果登录成功,则在关闭事件中打开一个实例。
Bitmap.Clone()和新的Bitmap(Bitmap)有什么区别?
据我所知,有两种复制位图的方法。
Bitmap.Clone()
Bitmap A = new Bitmap("somefile.png");Bitmap B = (Bitmap)A.Clone();
新的Bitmap()
Bitmap A = new Bitmap("somefile.png");Bitmap B = new Bitmap(A);
这些方法有何不同?我对内存和线程方面的差异特别感兴趣。
答案1
小编典典这是“深”副本和“浅”副本之间的共同区别,这也是几乎不建议使用的IClonable接口的问题。Clone()方法创建一个新的Bitmap对象,但像素数据与原始位图对象共享。Bitmap(Image)构造函数还会创建一个新的Bitmap对象,但是该对象具有自己的像素数据副本。
SO上有很多关于Clone()的问题,程序员希望它避免使用位图的典型麻烦,位图是从中加载文件的锁。没有。一种可能的实际用法是避免使用库方法的麻烦,该库方法在传递的位图上不适当地调用Dispose()。
利用像素格式转换或裁剪选项的优势,重载可能会很有用。
bool()和operator.truth()之间有什么区别?
bool()
和operator.truth()
两个测试值是否
truthy 或 falsy ,他们似乎从文档颇为相似,它甚至说,在truth()
文档是:
这等效于使用bool构造函数。
但是,truth()
速度bool()
是简单测试的两倍(显示了Python 3.6的计时,但2.7相似):
from timeit import timeit
print(timeit('bool(1)',number=10000000))
# 2.180289956042543
print(timeit('truth(1)',setup='from operator import truth',number=10000000))
# 0.7202018899843097
那有什么区别呢?我应该使用truth()
代替bool()
吗?
flutter中的runApp(new MyApp())和runApp(new MaterialApp())有什么区别?
在flutter中,我们可以传递一个无状态小部件,该小部件将MaterialApp
实例返回给runApp()
函数,如下所示:
void main()=>runApp(new MyApp());class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return new MaterialApp( ... ); }}
或者我们可以像这样MaterialApp
直接将的实例传递给runApp()
函数:
void main()=>runApp( new MaterialApp( ... ););
这些方法之间有什么区别?谢谢。
答案1
小编典典视觉行为没有差异。变化的是热重装的行为方式。
例如,如果您使用runApp(MaterialApp())
,则从
runApp(MaterialApp(title: ''Foo''))
至
runApp(MaterialApp(title: ''Bar''))
则热重载不会考虑更改。
而如果您有以下课程:
class MyApp { @override Widget build(BuildContext context) { return MaterialApp( title: ''Foo'', ); )}
并像这样使用它:
runApp(MyApp())
然后改变title
的MyApp
将被正确地重新加载热点。
今天的关于Java 8中的map和和flatMap的分享已经结束,谢谢您的关注,如果想了解更多关于Application.Run()和Form.ShowDialog()有什么区别?、Bitmap.Clone()和新的Bitmap(Bitmap)有什么区别?、bool()和operator.truth()之间有什么区别?、flutter中的runApp(new MyApp())和runApp(new MaterialApp())有什么区别?的相关知识,请在本站进行查询。
本文标签: