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

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

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

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

Q&A

解決済

2回答

807閲覧

javaの配列に格納している特定の要素の数を取得したい。

ataru2222

総合スコア272

Java

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

1グッド

0クリップ

投稿2021/06/09 07:38

前提・実現したいこと

javaの配列に格納している特定の要素の数を取得したい。

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

現在javaで配列に格納した特定の要素の数を取得したいのですが、うまいこといかずに困っております。
ちなみに以下のような事は出来ないでしょうか?

理想のソースコード

Python

1l = ['a', 'a', 'a', 'a', 'b', 'c', 'c'] 2 3print(l.count('a')) 4# 4 5 6print(l.count('b')) 7# 1 8 9print(l.count('c')) 10# 2 11 12print(l.count('d')) 13# 0 14

2次元配列を使わないといけないかな?と考えて方法を探していたところ
pythonのコードを発見したため、このような質問をさせていただきました。

詳しい方いらっしゃいましたら、ご教授願います。
よろしくお願いいたします。

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

ここにより詳細な情報を記載してください。

TN8001👍を押しています

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

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

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

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

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

Crimson_Tide

2021/06/09 07:49

要素数を返すメソッドを作成して利用するのではだめでしょうか?
m.ts10806

2021/06/09 07:49

「配列」も作り方がいくつもあります。 関係のない言語のコードではなくJavaの手元のコードを提示してください。
ataru2222

2021/06/09 08:01

Crimson_Tide様 現在やり方を模索しているのですが、複雑なやり方ばかり並んでいて理解できずに困っております。 方法につきましてはどんな方法でも構わないのですが、短いコードより、わかりやすいコードのものを探しております。
ozwk

2021/06/09 08:05

> 複雑なやり方ばかり並んでいて理解できずに困っております。 では「複雑なやり方」が書いてある書籍ないしURLを貼って引用し、 どこがわからないかを書いてください
Crimson_Tide

2021/06/09 08:16

Javaには広義の配列が複数存在します。 恐らく int[] test = {1,2,3}のようなものと想像はしますが、どの配列を想定しているのか確信できません。 m.ts10806さん の追記依頼にあるように、どのような配列を想定しているか追記してください。 できればこういうアプローチしてみたがうまくいかないみたいなコードもあれば、アドバイスを受けやすいと思います。
hope_mucci

2021/06/09 08:26

「うまいこといかない」と書かれていますので、まず自分で作成したコードを編集で本文に追記しましょう。 そうすれば、そのコードの問題点を回答してくれる人がいらっしゃると思います。
guest

回答2

0

ベストアンサー

pythonのcount()関数のような便利なものはjavaにはないと思われます。

あるんですけど誰もフォローがないですね。。。

Collections#frequency (Java Platform SE 8 )
Stream (Java Platform SE 8 )

Java

1import java.util.ArrayList; 2import java.util.Arrays; 3import java.util.Collections; 4import java.util.List; 5 6public class Sample { 7 public static void main(String[] args) { 8 String[] l1 = { "a", "a", "a", "a", "b", "c", "c" }; 9 int c1 = Collections.frequency(Arrays.asList(l1), "a"); 10 System.out.println(c1); // 4 11 12// char[] l2 = { 'a', 'a', 'a', 'a', 'b', 'c', 'c' }; // not work 13 Character[] l2 = { 'a', 'a', 'a', 'a', 'b', 'c', 'c' }; 14 int c2 = Collections.frequency(Arrays.asList(l2), 'a'); 15 System.out.println(c2); // 4 16 17 18 List<Test> results = new ArrayList<>(); 19 results.add(new Test("あ")); 20 results.add(new Test("あ")); 21 results.add(new Test("い")); 22 results.add(new Test("う")); 23 results.add(new Test("あ")); 24 25 long c3 = results.stream().filter(x -> x.getName().equals("あ")).count(); 26 System.out.println(c3); // 3 27 } 28 29 static class Test { 30 private String name; 31 32 Test(String s) { 33 name = s; 34 } 35 36 String getName() { 37 return name; 38 } 39 } 40}

プリミティブ型だとうまくいかないので注意してください。

投稿2021/06/09 12:21

TN8001

総合スコア9396

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

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

ataru2222

2021/06/09 21:28

ありがとうございます。 2重のforだと件数が数万件と増えてきたときの事を考えると、良くない感じがしております。 このようなコードをを探しておりましたので、BAを移しておきます。 本当にありがとうございました。
guest

0

特定の要素名とその数を取得するコードはこちらでできました。
pythonのcount()関数のような便利なものはjavaにはないと思われます。

List<Test> results = new ArrayList<Test>(); results.add("あ"); results.add("あ"); results.add("い"); results.add("う"); results.add("あ"); HashSet<String> hs = new HashSet<String>(); for(Test json: results){ count = 0; for(Test json2: results){   if(json.getName().equals(json2.getName()) ){ count++; } } hs.add(json.getName() + ":" + count); }

お時間を使っていただきました皆様、
本当にありがとうございました。

投稿2021/06/09 10:42

ataru2222

総合スコア272

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問