- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
(我使用的是 Java,因此添加了“Java”标签,以防它影响任何答案,但有些人可能会认为该标签是不必要的。)
考虑以下因素:
我有一个阳台/阳台可以进行图形规划。作为最终计划的一部分,我需要列出 build 阳台所需的所有 Material 。为了简化计算过程,我将阳台分成不同的部分:
甲板上 - 涉及塑料围栏组件和固定件(即螺钉、 bolt )
甲板下 - 涉及木质副框架和更多固定装置。
...还有其他我不会深入讨论的内容。
出于争论:由于我们提供不同的围栏设计,因此有 100 种不同的库存商品可供选择。每个商品都有自己的类别,包括尺寸、颜色、数量及其 ID 引用等信息。
我想做的是创建每个部分所需的修复列表,并将它们全部添加到一个最终列表中,没有任何重复。
最终的想法是在已处理的计划旁边显示项目名称和数量。
例如:
第 1 部分要求:
- 25 个螺丝 A
- 15 x 螺丝 B
- 5 个螺丝 C
第 2 部分要求:
- 25 个螺丝 A
- 15 x 螺丝 B
- 5 个螺丝 F
第 3 节要求:
- 45 x 螺丝 B
- 50 x 螺丝 C
- 24 x 螺丝 G
总列表
第 1 部分 + 第 2 部分 + 第 3 部分 = {完整的 Material list }
我尝试过/考虑过的:
我上面提到的所有螺钉都有自己的类,并扩展了父类(super class)“紧固件”。上面提到的每个部分都有一个变量:
ArrayList<Fasteners>
因此,当我计算时,我可以将螺钉添加到该变量中。一旦每个部分计算出需要多少个紧固件,我就会将它们添加到一起。
我考虑过在“Fasteners”父类(super class)中创建一个“add(Fishings)”方法,将任何重复的项目添加在一起。但因为有 100 个项目,我认为编码不会非常有效,并且怀疑有更好的方法来利用我在这里设置的多态性。任何在线引用或提示都会有帮助并且非常感激。
最佳答案
这里有一个建议:
创建一个名为 FastenerType 的枚举,然后使用 EnumMap<FastenerType, AtomicInteger>
固定您的紧固件。我们称之为包。
然后做类似的事情
public class FastenerBag {
private Map<FastenerType, AtomicInteger> fasteners = new EnumMap<FastenerType, AtomicInteger>(FastenerType.map);
FastenerBag(){
// init your ints to zero
}
public void addFastenersFor(VerandaPart part){
for (FastenerType type : FastenerType.values()){
fasteners.get(type).addAndGet(part.getRequiredFasteners().get(type));
}
}
}
不必太担心性能。首先让它工作。然后使其可读(重构),然后优化。
关于java - 库存 list -多态设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14730192/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!