質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

5回答

2227閲覧

List<Test>のある項目と一致しないものがあるか検索したい

chaso

総合スコア8

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

0クリップ

投稿2018/05/15 10:48

前提・実現したいこと

List<Test> testList = (DBからデータを取得する。)
このtestList内のデータと比較したいデータで一致するものがあるか調べたい。

Test.java

Java

1package test.entities; 2public class Test { 3 private int id; 4 private String name; 5 public int getId(){ 6 return id; 7 } 8 public void setId(int id){ 9 this.id = id; 10 } 11 public String getName(){ 12 return name; 13 } 14 public void setName(String name){ 15 this.name = name; 16 } 17}

例:
入力された都道府県が関東(1都6県)に一致するか調べたい。
testListには以下の情報が
id:1
name:東京都

id:2
name:千葉県

id:3
name:神奈川県

id:4
name:埼玉県

id:5
name:茨城県

id:6
name:群馬県

id:7
name:栃木県

以下の文字列が入力された場合の結果を示す。
・東京都⇒true
・沖縄県⇒false
・群馬⇒false
・京都⇒false

発生している問題・エラーメッセージ

現在、以下のようなコードを書いているが一致しないときfalseとなるが、一致した場合にtrueにならない。
Listをぐるっと回したとき、すべてが一致したらtrue。一致しないものがあったら、false。となる。
対象の文字列が複数指定可能な場合などはListに格納されているためその場合はその考慮も必要ですが、対象の文字列のList形式はList<String> exampleListのため、以下で問題ない認識です。(まだ、検証できていませんが)

Java

1for (String str : exampleList) { 2 if (!Arrays.asList(testList).contains(str.getName())) { 3 flg = false; 4 } 5}

該当のソースコード

Java

1for (Test t : testList) { 2 if (test.getId().equals("対象のデータ")) { 3 flg = false; 4 } 5}

試したこと

Java

1for (Test t : testList) { 2 if (!test.getId().equals("対象のデータ")) { 3 flg = false; 4 } else { 5 flg = true; 6 } 7}

これだと、最後がtrueかfalseかでその後の処理が変ってしまう…

補足情報(FW/ツールのバージョンなど)

Java8、Spring

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

Java8以降であれば、割と簡単に記述はできます。

List<TestVO> target に、記載していただいたデータが入っているのであれば、

java

1boolean contains = target.stream().anyMatch(vo -> vo.getName().equals("東京都"));

で取得できるでしょう。

投稿2018/05/15 15:30

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

List<Test>のある項目と一致しないものがあるか検索したい

って、なにをどうしたい?
ソースを見ても何をしたいのか見えない

リストの中に一個でも一致するものがあればTrueをかえせばいいというはなしかな?

投稿2018/05/15 12:51

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

for ループの前で、

flag = true;

として、

if (!test.getId().equals("対象のデータ")) flg = false;

じゃ、いけないのでしょうか?

通常は、ここで break でしょうが。

投稿2018/05/15 13:33

pepperleaf

総合スコア6383

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

java

1flag = gsldr; 2for (Test t : testList) { 3 if (!test.getName().equals("対象の都道府県名")) { 4 flsg = false; 5 break; 6 } 7}

一致するデータがあれば、 ループはその時点で終了して、flag は true になります。
一致するデータがなければ、falg は false のままでループが終了します。

投稿2018/05/15 12:33

編集2018/05/15 21:47
katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

提示されているコードの場合
すべて繰り返し処理の最後の判定の結果になっているので

flag = flag && false;

の様に繰り返し判別している結果を
一つにするべきです

投稿2018/05/15 11:22

Tomohiro12

総合スコア112

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問