今天好,我有一个设计问题,我不能真正弄明白我的头,我希望我能解释清楚,让所有人都能理解。我有一个ClassA,它是一个包含ClassB的Arraylist的单例,所以ClassA是:
private classA(){
//private constructor
}
public static synchronized classA getClassA(){
if(ClassA == null){
ClassA = new ClassA();
}
return ClassA;
}
private ArrayList<ClassB> classb = new ArrayList<ClassB>(5);
public ArrayList<ClassB> getClassB(){
return this.classb;
}
public ClassB getLastClassB() {
return this.classb.get(this.classb.size() - 1);
}
public ClassB() {
}
private ArrayList<ClassD> classd = new ArrayList<ClassD>();
public ArrayList<ClassD> getClassD(){
return this.ClassD;
}
public ClassD getLastClassD() {
return this.ClassD.get(this.ClassD.size() - 1);
}
ClassA A = ClassA.getClassA();
Class B B = new ClassB();
ClassD D = new ClassD();
//do some setters here for D
B.getClassD.add(D)
// do some things in B
A.getClassB.add(B)
但是当我试图在另一个类中访问它时,我得到一个java.lang.IndexOutOfBoundsException:index:0,size:0,我猜这是来自ClassB保存ClassD的ArrayList的,因为其他函数也在工作。
for(int i = 0; i < classA.getClassB.size(); i++)
if(classA.getClassB().get(i).getClassD().size() > 0){ //java.lang.indexOutOfBoundsException
有什么想法,什么可能是错误的,或者是我的设计实现的方式吗?…我不能使ClassB成为另一个单例,因为这样我就会在ArrayList ClassA中拥有相同的ClassB对象。有什么更好的实现方法吗?..事先多谢。
在this.classd.get(This.classd.size()-1)
和另一个类似的代码行中,size()
调用是否总是保证返回大于零的值?换句话说,你能保证列表总是至少有一个元素吗?显然不是,所以是的,这是一个糟糕的设计。
您的getLastClassX()
方法应准备好返回null
并因此在尝试获取大小为()-1的项之前调用列表中的!isEmpty()
。
问题类文件数据类问题(val id:Int,val问题:String,val图像:Int,val选项一:String,val选项二:String,val选项三:String,val选项四:String,val更正答案:Int, 对象文件结果: 对象常量{ 返回问题列表}
问题内容: 使用示例: 假设我有一个课堂电话。我还有另一个上课电话。 类的ArrayList为。 要遍历.. 的Arraylist而不是这样做: 我们可以像这样简单地遍历ArrayList : 现在,我要迭代并打印出所有第3个对象: 现在我的问题是: 与使用常规的for循环不同,我如何使用ArrayList迭代打印出枪支对象列表? 问题答案: 您要遵循与以前相同的模式: 在这种情况下,它将是:
我有档案卡。java和Util。java,我不允许修改它。出于我自己的目的,我创建了一个类Card2,它扩展了Card,并添加了一个方法和一个方法。Util类包含一个采用ArrayList的方法 我的理解是,在这种情况下,
我试图在包含对象ArrayList的类上使用Parcelable。 更新:Station现在也实现了Parcelable,正如Naveen Dew所建议的那样。 车站等级- 当我把图书馆的包裹递给“为声音而制造”服务时,我遇到了一个问题。 java.lang.RuntimeException:无法使用意图启动服务com.tsuryohananov.IsrailiRadio.BackgroundSo
问题内容: 我有一个包含许多对象的ArrayList。我想对相同属性名称的值进行求和。 示例数据为 ProfitAndLossDataDO的* 对象 * 结果将是(人相同时的值总和)- 逻辑类 ProfitAndLossDataDO 谢谢 问题答案: 我会遍历列表并将结果收集在地图中: 编辑: Java 8对接口的增强使我们能够以一种稍微更优雅的方式来实现此方法,中间是令人讨厌的代码块:
问题内容: 我有一个包含许多对象的ArrayList。我想对相同属性名称的值进行求和。 示例数据为 ProfitAndLossDataDO的* 对象 * 结果将是(人相同时的值总和)- 逻辑类 ProfitAndLossDataDO 谢谢 问题答案: 我会遍历列表并将结果收集在地图中: 编辑: Java 8对接口的增强使我们能够以一种稍微更优雅的方式来实现此方法,中间是令人讨厌的代码块: