数组索引位置中的元素

时间:2013-08-22 06:26:11

标签: java arrays indexing

假设我有一个班级。它被称为Item。

public class Item {

public boolean usable = false;
protected boolean usage;    
public int id;
public String name;
public String type;
public int stacknum;
protected int tier;
public String rarity;
boolean equipable;
boolean equiped;
String altName;


public Item(int idIn, String nameIn, String typeIn) {

    usage = false;
    id = idIn;
    name = nameIn;
    type = typeIn;
    stacknum = 0;
    tier = 0;
    rarity = "Common";

}//end of constructor
}//end of class

假设我有一个名为:

的数组
Inventory = new Item[5];

它包含这些元素

Item elementOne = new Item(1, "Element One", "Array Element");
Item elementTwo = new Item(2, "Element Two", "Array Element");

Inventory[0] = elementOne;
Inventory[1] = elementTwo;
Inventory[2] = elementThree;

等等。我将如何编写一个方法来找出数组中的哪个元素(或一般的任何东西)是I.e.

elementOne.findPlace

将返回int值0。

谢谢!

3 个答案:

答案 0 :(得分:3)

在这种情况下,由于数组的范围以及类不了解其周围环境这一事实,您可能无法这样做。

使用对象列表,并使用:

myList.indexOf(item)

获取int索引。

Item类还应包含equals(方法。

答案 1 :(得分:0)

你可以用数组做到这一点,但它可能是errorprone,因此需要很多防御性编码。在课程项目中:public int getID(){return this.id;}

int index = Inventory[element.getID()-1];

如果元素不在清单中,则会抛出错误。最好使用列表,但如果你坚持使用数组。

public static int getIndexOfItem(Item item, Item[] inventory){
  if(inventory == null || item == null)
    return -1;
  if (item.getID()-1 > inventory.length)
    return -1;
  return inventory[item.getID()-1];
}

答案 2 :(得分:0)

  

我如何编写方法来找出数组中的哪个元素(或任何一般

根据问题的引用部分,请考虑以下答案:

Item result= null ;
for(Item e: Inventory) {
    if( <whatever-your-search-condition-is> ) {
        result= e ;
        break;
    }
}
if( result != null )
    <found>
else
    <not found>

更通用的解决方案:

List<Item> result= new LinkedList<Item>() ;
for(Item e: Inventory) {
    if( <whatever-your-search-condition-is> )
        result.add( e );
}
if( result.size() > 0 )
    < result.size() found >
else
    < none found >

注意:此代码适用于作为数组的库存,List或一般Collection