配列リスト内のブラケットのインデックスを取得する必要があります。使用するデータ構造については、javadoc を調べて、それを使用して何ができるかについての情報を取得する必要があると思います。ArrayList.contains() は ArrayList の便利なメソッドですが、この状況では ArrayList.indexOf() の方が便利です。
public int indexOf(Object o)
Returns the index of the first occurrence of the specified element in this list, or -1
if this list does not contain the element. More formally, returns the lowest index i
such that (o==null ? get(i)==null : o.equals(get(i))), or -1 if there is no such index.
このメソッドを使用すると、2 つの連続する開き括弧と閉じ括弧が存在する場合、それらのインデックスを取得できます。インデックスを取得したら、インデックス間を反復できます。ちょっとパース作業なので、再帰的なメソッドを実装しようとすると手を汚すかもしれません。例: { "(", "(","2", "+", "4", ")", " /"、"2"、")"}。このようなネストされたステートメントについては、さらに調査する必要があります。
知っておくべきことは、複雑なステートメントのツリーです。ツリーのデータ構造を確認することを強くお勧めします。
編集:この問題に対する多数のスタック実装も見つけることができます。キーワード: スタック式パーサー アルゴリズム。