アプリ版:「スタンプのみでお礼する」機能のリリースについて

int型の配列を二つ用意し、
二つの配列のいずれにも含まれる数字をすべて探し出して表示するプログラムを作るとき、
あなたならどのようなコードを書きますか?

二重ループだと思いますが
配列から共通の数字を取り出す方法が分かりません。
ご教示いただけますと幸いです。

質問者からの補足コメント

  • ありがとうございます!
    言葉足らずですみません。
    考え方は分かります。

    for文かけます。しかし、
    配列Aから要素を一つ取り出して、
    配列Bの要素を一つずつ照らし合わせる、
    Aの一つ目が終わったら二つ目に移行し、
    配列Bの要素を一つずつ照らし合わせる...の繰り返しを書きたいのですが
    少し混乱しているのでソース参照したいです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/08/10 09:04
  • うれしい

    できました、ありがとうございました

      補足日時:2021/08/10 10:07

A 回答 (4件)

ひとつずつリニアサーチなんてすごく遅いので


やめましょう。
HashSet が楽です。

配列AをHashSet化する。
配列Bの各要素がHashSetに含まれるかチェックする。

検索はHashSetが超高速でやってくれるのでらくちんです。
    • good
    • 0

今ググって見つけただけですが



import static java.until.stream.Collectors.toList;



List<Integer> list1 = …


List<Integer> list2 = …


List<Integer> list3 = list1.stream().filter(list2::contains).collect(toList());

みたいな方法もあるようです
    • good
    • 1

java人間ではないんでアレですが。



for 要素A in 配列A
 for 要素B in 配列B
  if (要素A==要素B){
   配列Cに要素Aを追加  ※要素Bでも可
  }
 next
next

こんな感じになるかな。
図で表すと理解しやすいと思います。
    • good
    • 2

作るためのヒントが欲しいんですか?


ソースが丸々欲しいんですか?

普通に考えて、
 ・配列Aから要素を一つ取り出す。
 ・配列Bから要素を一つ取り出す。
 ・それぞれのの要素が一致していれば、その値を配列Cに格納する
という方法が浮かびますが。

for文は書けますよね?
この回答への補足あり
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!