充其量,HashMap可以在常数时间内获得一个元素O(1)。
在最坏的情况下,假设篮子被组织成一个链表,HashMap可以在线性时间内从中获得一个元素O(n)。
HashMap 从average中获取一个元素的复杂度是多少?以及如何确定这个值?
充其量,HashMap可以在常数时间内获得一个元素O(1)。
在最坏的情况下,假设篮子被组织成一个链表,HashMap可以在线性时间内从中获得一个元素O(n)。
HashMap 从average中获取一个元素的复杂度是多少?以及如何确定这个值?
有这样一种基于双重检查锁定的单例实现(第 2 项):
public class Singleton {
private static volatile Singleton instance;
public static Singleton getInstance() {
Singleton localInstance = instance;
if (localInstance == null) {
synchronized (Singleton.class) {
localInstance = instance;
if (localInstance == null) {
instance = localInstance = new Singleton();
}
}
}
return localInstance;
}
}
问题1:这里有什么用localInstance?为什么不这样做:
public class Singleton {
private static volatile Singleton instance;
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
?
我有一个猜测:读取volatile-field 比读取常规字段或局部变量要昂贵一些,这就是为什么在这里使用局部变量。如果我是对的,有人可以更详细地描绘这一刻——我将不胜感激。
问题2:为什么不在这个类中声明私有构造函数?实际上,如果它不存在,您可以在代码中的某处显式创建此类的实例。
有一些BroadcastReceiver在 activate 方法中onStart注册并在onStop.
有一个服务发送一个意图,它应该捕获给定的BroadcastReceiver一个并在活动中显示来自它的数据,它是它的类字段。
如果服务在屏幕旋转的那一刻发送了一个意图,即在接收器被停用但尚未注册的时候,那么来自服务的数据将不再达到激活(如果用户会发生类似情况只是在下载过程中最小化应用程序)。
请告诉我如何正确处理这种情况。
附言。也许在这种情况下,服务和活动之间的一些其他通信方式会起作用。为了更具体和简化任务,它看起来像这样:
在活动中,我们按下按钮,启动一项服务,从 Internet 下载文本并将此文本返回到显示它的活动。主要目标是保证数据从服务到活动的传递。
这个任务很常见,我相信很多人已经解决了它,但由于某种原因我找不到好的解决方案。
对于除 type 之外的所有原始数据类型boolean,Java 都有一个唯一定义的大小。
类型的大小boolean,据我了解,取决于特定虚拟机的实现。
问题:为什么boolean没有明确确定类型的大小?
你好。
有CardView,里面有TextView。自我CardView包裹在ScrollView:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="50dp"
android:layout_marginLeft="50dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorAccent"
android:text="здесь большой текст"/>
</android.support.v7.widget.CardView>
</ScrollView>
正如您从标记代码中看到的那样,CardView左边距和右边距已添加 - 它们确实正确显示。
它需要添加到CardView顶部和底部的边距。
添加android:layout_marginTop到CardView导致在顶部添加边距,但在这种情况下ScrollView它不会将内容滚动到底部。
添加android:layout_marginBottom到CardView根本不会进行任何更改。
请告诉我如何正确添加这些字段。
附言。标记实际上要复杂得多,只是一个最小的可重现示例。
有一些应用程序,根据用户的请求,从网络上下载一些数据并显示出来。此应用程序中的网络请求通过AsyncTask.
鉴于许多人断然建议在使用AsyncTaskInternet 时不要使用它(而是向服务发出网络请求),因此出现了这个问题。
再来一点:
该应用程序的本质是显示来自多个来源的(文本)新闻列表。
现在是如何实现的:
有一个Navigation Drawer显示站点列表的活动,通过单击某个菜单项,会出现一个包含 的片段RecyclerView,其中AsyncTask使用加载来自所选站点的数据。
当滚动RecyclerView到某个元素时,它会启动将信息AsyncTask加载RecyclerView到下一部分等等(一种Endless RecyclerView)。
当您选择另一个菜单项时,会出现另一个片段,但具有相同的操作原理(数据只是从另一个来源加载)。
创建每个片段时,它都会被执行setRetainInstance(true),也就是说,当设备配置更改时,来自它的数据AsyncTask将安全地返回到所需的片段。
从站点中提取必要信息的过程使用Jsoup.
问题:
这个应用程序的架构有什么问题?(就使用AsyncTask和一般而言)。
使用这个特定任务是好的做法AsyncTask吗?还是值得将网络工作转移到服务上?(我知道并非所有类型的服务都不能在主线程中工作)。
但是如果你还需要把网络搬到一个服务上,那么如果你需要加载数据,启动服务,加载数据,返回数据给片段,完成服务?所以每一次?
老实说,虽然它在每个角落都说AsyncTask它不好,但我看不出有任何明确的理由让网络成为这个特定应用程序的服务。但是既然很多人都说了,那我就有点不明白了。请给我解释一下。
事实上,AsyncTask它是为短期任务而设计的,但我加载了非常少量的数据(文本),最后AsyncTask它只需要几秒钟就可以完成。
据我了解,该服务的主要目的是执行长时间的后台任务。
我再重复一次——我并不是说在这种情况下最好的解决方案是使用AsyncTask,但我没有看到任何反对使用它的论据。
或者也许还有其他一些更正确的架构解决方案来完成这项任务?
尽管我阅读了 Internet(我阅读了很多),但对于描述类似内容的链接(也许我错过了),以及您对这个主题的回答和对这个问题的看法,我都会很高兴。