如果int变量等于ArrayList中的position,则赋值ArrayList元素

Gra*_*ick 1 java arraylist

我想将我的名为iD的int与myArrayList的索引进行比较.如果有匹配(iD = 1并且该索引处有一个元素),我想为我的字符串myName分配该位置的项目值.为此,我使用了:

for (int i =0; i <myArrayList.size (); i++) {
    if (iD == i) { 
      myName = myArrayList.get(i);
    } 
Run Code Online (Sandbox Code Playgroud)

但是我在这一行得到了"无法从MyObject转换为字符串"的错误:

myName = myArrayList.get(i);
Run Code Online (Sandbox Code Playgroud)

这是整个代码:

int iD = 1;
String myName;


public class MyObject 
{
  public String name;

  public  MyObject( String name) 
  {
    this.name = name;
  } 

  @Override
    public String toString()
  {
    return (name);
  }
}


ArrayList<MyObject> myArrayList = new ArrayList<MyObject>();

void setup() 
{
  size(100, 60);
  myArrayList.add(new MyObject("a"));
  myArrayList.add(new MyObject("b"));
  myArrayList.add(new MyObject("c"));
  for (int i =0; i <myArrayList.size (); i++) {
    if (iD == i) { 
      myName = myArrayList.get(i);
    } 

    System.out.println(myArrayList);
    myArrayList.removeAll(myArrayList);
  }
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我得到这个错误,因为myName是一个String而ArrayList包含字符串.谁能帮我解决这个问题?

谢谢你的帮助

小智 5

实际上,您的arrayList包含"MyObject".尝试调用toString方法.

myName = myArrayList.get(i).toString();

要么

myName = myArrayList.get(i).name 因为名字是公开的.