我有三个 ArrayList,两个是字符串,最后一个是整数。
第一个 ArrayList 包含特定产品的特定变体 (variantArray),例如可乐的风味变体,第二个包含单元 (unitArray),其中包含产品的尺寸 (80oz、500mL、1L) 等单位,以及最后一个是数量 *(quantityArray)。
这是我使用的类。
public class CurrentOrderClass {
//ArrayLists
private ArrayList<String> variantArray = new ArrayList<String>();
private ArrayList<String> unitArray = new ArrayList<String>();
private ArrayList<Integer> quantityArray = new ArrayList<Integer>();
//TODO ArrayList functions
public ArrayList<String> getUnitArray() {
return unitArray;
}
public void setUnitArray(ArrayList<String> unitArray) {
this.unitArray = unitArray;
}
public void addToUnitArray(String unit){
this.unitArray.add(unit);
}
public ArrayList<Integer> getQuantityArray() {
return quantityArray;
}
public void setQuantityArray(ArrayList<Integer> quantityArray) {
this.quantityArray = quantityArray;
}
public void addToQuantityArray(int quantity){
this.quantityArray.add(quantity);
}
public ArrayList<String> getVariantArray() {
return variantArray;
}
public void setVariantArray(ArrayList<String> variantArray) {
this.variantArray = variantArray;
}
public void addToVariantArray(String variantArray){
this.variantArray.add(variantArray);
}
@Override
public String toString() {
return "[ product=" + productName + ", variants=" +
variants + " , unit=" + unit + " , quantity=" + quantity + "]";
}
}
我接受用户输入,因此用户选择 Variant、Unit 和 Quantity,然后将输入存储在各自的 ArrayList 中。
但是,当用户输入 ArrayLists 中已经存在但数量不同的 Variant 和 Unit 时,我在更新 ArrayLists 时遇到问题。我想要做的不是添加新条目,而是更新当前的 ArrayLists,这样当用户输入变量和单位但数量不同时,我只会更新数量。
我尝试的第一件事是通过 using 查看输入是否已经存在于 ArrayList 中indexOf(userInputVariant)
,然后检查它是否与 a 匹配indexOf(userInputUnit)
,这意味着用户输入已经重复。但是,我不认为 indexOf 在该逻辑上运行,它返回的值是它找到userInputVariant
字符串的第一个实例的值。
我尝试的第二次尝试是使用 for each 循环,但是,我再次很难正确返回我想要的索引。
我实例化了一个CurrentOrderClass
命名的对象,currentOrder
并用“Grape”预填充了它的variantArray的前10个元素
之后,我尝试了这个 if-else 语句:
if( (currentOrder.getVariantArray().indexOf(product.getVariant()[variantPosition]) ==
currentOrder.getUnitArray().indexOf(product.getUnit()[position])
但是,如上所述, indexOf 返回一个 int ,它首先找到了我告诉它要查找的 String ,我认为它不会检查它是否在该特定位置之后存在。
我尝试的第二个代码是使用 for-each 并从那里返回位置,但同样,它只返回位置 = 0。
for( String Grape : currentOrder.getVariantArray() ){
Log.d("Angelo", "Retrived Element: " + Grape
+ " at position = " + currentOrder.getVariantArray().indexOf(Grape));
}
我目前正在考虑在 for-each 循环中运行 for-each 循环,但我不知道如何让它返回我想要的正确位置。
有没有人知道如何使它正常工作?我需要通过与我的 unitArray 进行“交叉引用”来返回在我的 variantArray 中多次出现的项目的位置。谢谢。