提供“无限”的Iterator实现通常被认为是不好的做法。 即哪里调用hasNext()总是(*)返回true? 通常我会说“是”,因为调用代码可能会有不正常的行为,但在下面的实现中,除非调用者从列表中移除迭代器初始化的所有元素,否则hasNext()将返回true。 即有终止条件 。 你认为这是Iterator的合法使用吗? 这似乎并没有违反合约,虽然我认为可以说这是不直观的。 public class CyclicIterator<T> implements Iterator<T> { private final List<T> l; private Iterator<T> it; public CyclicIterator<T>(List<T> l) { this.l = l; this.it = l.iterator(); } public boolean hasNext() { return !l.isEmpty(); } public T next() { T ret; if (!hasNext()) { throw new NoSuchElementException(); } else if (it.hasNext()) { […]
有没有一种工具或方法来分析Postgres,并确定应该创build哪些缺失的索引,以及哪些未使用的索引应该被删除? 我有一点经验做这与SQLServer的“探查器”工具,但我不知道Postgres中包含一个类似的工具。
所以,我一直在阅读我的数据库devise中的识别关系和非识别关系,而对于我而言,一些答案似乎与我矛盾。 以下是我所看到的两个问题: 识别和非识别关系有什么区别? 麻烦决定识别或不识别关系 从每个问题的顶部答案看,我似乎得到了两个不同的想法是什么一个识别关系。 第一个问题的回答是,一个识别关系“描述了一个情况,即子表中的一行的存在取决于父表中的一行。 给出的一个例子是:“一个作者可以写很多书(一对多的关系),但是没有一个作者就不可能存在一本书。 这对我有意义。 但是,当我读到第二个问题的回答时,我感到困惑,因为它说:“如果一个孩子识别了他的父母,这是一个识别关系。 答案然后举例说明社会安全号码 (是识别一个人),但地址不是(因为很多人可以住在一个地址)。 对我来说,这听起来更像是主键和非主键之间的决定。 我自己的直觉(和其他网站的其他研究)指出了第一个问题,其答案是正确的。 然而,在我继续前进之前,我想validation一下,因为我正在努力理解数据库devise,所以我不想学习错误。 提前致谢。
我通过将Facebook代码粘贴到文本小部件中,在我的侧栏中使用Facebook代码框。 我的主题是响应式的,我想得到像框一样正确resize。 我发现这个教程,但他说他这样做的方式,不是“完全响应”,所以我不知道是否有更好的方法来做到这一点。
有没有一种简单的方法来将Material Design图标库的所有图标导入到一个android项目中,而无需手动执行?
我正在尝试在我的项目中使用新的Design TabLayout。 我希望布局适应每个屏幕大小和方向,但是可以在一个方向上正确地看到它。 我正在处理重力和模式设置我的tabLayout为: tabLayout.setTabGravity(TabLayout.GRAVITY_CENTER); tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); 所以我期望如果没有空间,tabLayout是可滚动的,但是如果有空间的话,它是居中的。 从指南: 公共静态最终诠释GRAVITY_CENTER重力用于布局在TabLayout中心的标签。 public static final int GRAVITY_FILL重力用于尽可能地填充TabLayout。 此选项仅在与MODE_FIXED一起使用时才生效。 公共静态最终诠释MODE_FIXED固定选项卡并发显示所有标签,最适用于从标签之间的快速枢轴受益的内容。 选项卡的最大数量受限于视图的宽度。 固定标签具有相同的宽度,基于最宽的标签标签。 public static final int MODE_SCROLLABLE可滚动选项卡在任何给定时刻显示选项卡的子集,并且可以包含更长的选项卡标签和更多数量的选项卡。 当用户不需要直接比较标签标签时,它们最适合用于在触摸界面中浏览上下文。 所以GRAVITY_FILL只与MODE_FIXED兼容,但是在没有为GRAVITY_CENTER指定任何东西,我期望它与MODE_SCROLLABLE兼容,但这是我使用GRAVITY_CENTER和MODE_SCROLLABLE 所以它在两个方向都使用SCROLLABLE,但它不使用GRAVITY_CENTER。 这是我期望的景观。 但有这个,我需要设置MODE_FIXED,所以我得到的肖像是: 为什么如果tabLayout适合屏幕,GRAVITY_CENTER不能用于SCROLLABLE? 有没有什么办法来dynamic设置重力和模式(并看看我的期望)? 非常感谢你! 编辑:这是我的TabLayout的布局: <android.support.design.widget.TabLayout android:id="@+id/sliding_tabs" android:layout_width="match_parent" android:background="@color/orange_pager" android:layout_height="wrap_content" />
我从来没有find关于助手/实用程序类的简单问题的好答案: 为什么我会创build一个单身(无状态),而不是使用静态方法? 如果一个对象没有状态,为什么需要一个对象实例呢?
我一直在读“ 四人帮” ,以解决我的一些问题,并遇到调解员模式。 我曾经在我的项目中使用Observer来制作一些GUI应用程序。 我有点困惑,因为我没有发现两者之间的巨大差异。 我浏览find差异,但找不到我的查询任何答案。 有人能帮我区分这两者吗?
我们开发商业应用程序。 我们的客户正在寻求自定义字段的支持。 例如,他们想要添加一个字段到客户表单。 什么是已知的devise模式来存储字段值和字段的元数据? 我现在看到这些选项: 选项1 :将types为varchar的Field1,Field2,Field3,Field4列添加到我的Customer表中。 选项2 :在customer表中添加一个XMLtypes的列,并将自定义字段的值存储在xml中。 选项3 :添加一个types为varchar的CustomerCustomFieldValue表,并在该列中存储值。 该表还将具有一个CustomerID,一个CustomFieldID。 CustomerID, CustomFieldID, Value 10001, 1001, '02/12/2009 8:00 AM' 10001, 1002, '18.26' 10002, 1001, '01/12/2009 8:00 AM' 10002, 1002, '50.26' CustomFieldID将是另一个名为CustomField的表中具有以下列的ID:CustomFieldID,FieldName,FieldValueTypeID。 选项4 :将CustomerCustomFieldValue表添加到每个可能值types的列中,并将值存储在右列中。 与#3类似,但字段值是使用强types列存储的。 CustomerID, CustomFieldID, DateValue, StringValue, NumericValue 10001, 1001, 02/12/2009 8:00 AM, null, null 10001, 1002, null, null, 18.26 10002, 1001, 01/12/2009 […]
我能find的反应堆模式的唯一解释是在维基百科 ,它有点太抽象(imho)。 你能以更具体的方式来描述这个模式吗?理想情况下是用代码片段还是高层次的类图?