我有Arraylist
个对象ArrayList<Product> productDatabase.
该对象包含String
和double
,然后这些对象将由addProductToDatabase();
添加到productDatabase中如下:
public void addProductToDatabase(String productName, double dimensions); {
Product newProduct = new Product(ProductName, dimensions);
productDatabase.add(newProduct);
}
我还想制作一个Arraylist<ProductCount> productInventory
来计算Product
占多少ArrayList<ProductCount> productInventory
。然而,在它可以添加到addProductToInventory()
之前,它应该首先检查在运行public Product getProduct(String name) {
for(i = 0; i < productDatabase.size(); i++)
if(productDatabase.get(i).contains(name) //Error: cannot find symbol- method contains.(java.lang.String)
return productDatabase.get(i)
}
public void addProductToInventory(String productName, double quantity)
{
Product p = getProduct(name);
productCount.add(new ProductCount(o, quantity));
}
时产品数据库中是否存在对象详细信息
producttName
假设您总是拥有不同的对象(因此没有相同的名称),但您总是不确定尺寸(因此当您输入相同的getProductQuantityTotal()
+尺寸时,您可以编辑其中的尺寸)
在一天结束时,您必须将所有项目放在一个大盒子中并报告您已清点的内容,因此您还需要getProductDimensionTotal()
并且必须for
- - 顾名思义,获取您计算的对象总数以及维度的总和。
我需要添加/更改/删除此代码?不要首先考虑语法(因为BlueJ检查常见的语法错误,我只是手动输入)。我确定我在某个地方遗漏了contains()
声明,我可能会误导import java.util.*;
,因为它无法识别它(我有import java.util.ArrayList;
和{{1}} )
答案 0 :(得分:0)
要回答帖子标题中的问题:如何在对象中找到字符串 ,对于这些对象的列表,下面是一些示例代码:
首先,我创建了一个具有字符串字段的简单对象:
class ObjectWithStringField {
private final String s;
public ObjectWithStringField(String s) {
this.s = s;
}
public String getString() {
return s;
}
}
然后是填充其列表的代码,然后搜索每个字符串。这里没有魔力,它只是遍历列表直到找到匹配。
import java.util.List;
import java.util.Arrays;
/**
<P>{@code java StringInObjectInList}</P>
**/
public class StringInObjectInList {
public static final void main(String[] ignored) {
ObjectWithStringField[] owStrArr = new ObjectWithStringField[] {
new ObjectWithStringField("abc"),
new ObjectWithStringField("def"),
new ObjectWithStringField("ghi")};
//Yes this is a List instead of an ArrayList, but you can easily
//change this to work with an ArrayList. I'll leave that to you :)
List<ObjectWithStringField> objWStrList = Arrays.asList(owStrArr);
System.out.println("abc? " + doesStringInObjExistInList("abc", objWStrList));
System.out.println("abcd? " + doesStringInObjExistInList("abcd", objWStrList));
}
private static final boolean doesStringInObjExistInList(String str_toFind, List<ObjectWithStringField> owStrList_toSearch) {
for(ObjectWithStringField owStr : owStrList_toSearch) {
if(owStr.getString().equals(str_toFind)) {
return true;
}
}
return false;
}
}
输出:
[C:\java_code\]java StringInObjectInList
abc? true
abcd? false
在现实世界中,我使用List
而不是Map<String,ObjectWithStringField>
,其中键该字段。然后它就像themap.containsKey("abc");
一样简单。但是这里可以根据需要实施。你仍然需要做很多工作,按照你的任务的具体要求来完成这项工作,但它应该让你有一个良好的开端。祝你好运!