2016-07-03 2 views
-1

私はモバイルオブジェクトのarraylistを持っています。オブジェクトのインデックス - java

  • モバイル:
    • は私のArrayListは、モバイルオブジェクトのN番号が含まれてい

MobileName

  • をMobileID。

    私はMobileIDのみを持っており、そのオブジェクトのインデックスを見つける必要があります。

    私はarraylist.indexOfをしようとしていたが、私はboolean equals(Object o)メソッドをオーバーライドして、あなたのMobileクラスでは、私の変数(mobID)

  • +0

    あなたは単純にあなたのリストをループし、あなたが探しているものと各項目を比較する必要があります。 – njzk2

    答えて

    1

    で、配列内のオブジェクトのMobileIDを比較する方法を知っているとtrueを返していないときに、2つオブジェクトのIDは等しい。

    class Mobile { 
        @Override 
        boolean equals(Object obj) { 
         if (obj instanceof Mobile) { 
          Mobile otherMobile = (Mobile)obj; 
          return otherMobile.getMobileID().equals(this.getMobileID()); 
         } 
         return false; 
        } 
    
    } 
    

    は、あなたがあなたの将来のコードで確認されている場合は、Mobileの平等は、単にidで比較され、同じままになり、その後、この方法は簡単です。しかし、そうでない場合は、すべての要素をループし、idを比較すると、一致要素のインデックスが返されます。

    +0

    そして私はどこでメソッドを呼び出すべきですか? – Jorge

    +0

    @Jorgeはそのインデックスを見つけるために 'arrayList.indexOf(obj)'を呼び出すだけです。 –

    +0

    私は実際にこれを持っています: http://pastebin.com/ncJD0ztZそれはいいですか?または悪いプログラムです – Jorge

    2

    単一のループを使用して実行できます。

    public static int findIndexWithMobileID(ArrayList<Mobile> mobiles, String mobileID) { 
        for (int i = 0; i < mobiles.size(); ++i) { 
         if (mobileID.equals(mobiles.get(i).mobileID)) { 
          return i; 
         } 
        } 
        return -1; 
    } 
    

    しかし、多くのクエリを実行する場合は、文字列から整数へのマップを使用すると便利です。

    関連する問題