标题可能有点令人困惑或误导,但我正在尝试比较单个字符串:
String mystring = "abc";
然后尝试将其与数组列表中包含的每个字符串进行比较
ArrayList<String> array = new ArrayList<String>();
array.add("The first letters of the alphabet are abc");
array.add("abc");
array.add("Alphabet");
array.add("Nothing");
我有一个类,唯一重要的是“搜索”方法。
public void Search(ArrayList<Object> objects)
如果您没有注意到,此方法接收一个对象数组列表作为参数。现在的问题是ArrayList<String> array
我上面提到的是每个对象的属性,所以我不能直接迭代我想要的数组列表(也许我可以,但我只是不知道如何)。有没有办法接收数组列表内对象的属性作为参数或在不同类的方法中迭代它?
最佳答案
您的问题似乎与 Java 泛型有关。泛型在这里与 ArrayList
一起使用。告诉 Java 您想要在其中存储什么类型的对象 ArrayList
。如果你想创建一个ArrayList
存储特定种类的对象,例如类的实例 MyClass
你已经在别处定义了,那么你就可以这样做
ArrayList<MyClass> myObjs = new ArrayList<MyClass>();
实例化 ArrayList
只能容纳 MyClass
类型的对象.
你提到了
the ArrayList array that i mentioned above is a property of each these objects
我认为这意味着 Object
ArrayList<Object>
中包含的内容叫objects
您传递到您的Search
方法是特定类的实例(继续前面的示例 MyClass
)。该类包含 ArrayList<String>
您想要将其作为实例数据进行迭代。问题是你没有告诉 Java ArrayList<Object>
保存 MyClass
的实例,所以当你从对象中获取某些东西时,Java 不知道它的类型是 MyClass
。 (具体来说,编译器不知道这一点。)
如果你想访问一个对象的实例数据,那么你必须告诉Java你正在从什么类型的东西访问该数据。 Java 编译器非常关注对象的类型以及每个对象上定义的操作。如果您尝试从 MyClass
的实例访问实例数据,但编译器认为该实例的类型为 Object
,那么编译器会对你感到非常不安(因为它不知道所讨论的实例是否确实拥有你试图访问的数据——它可能是其他类型的对象!)。你需要做的是告诉编译器你只能存储 MyClass
的实例。在你的ArrayList
,这样编译器就会知道 ArrayList
中的对象拥有您想要访问的实例数据。
关于java - 将数组列表中包含的对象的参数传递给方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23351445/