🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

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

Q&A

解決済

2回答

1432閲覧

listの型を変換する方法

d_96a

総合スコア15

Java

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

0グッド

0クリップ

投稿2019/12/23 05:16

###実現したいこと
javaでライブラリーの追加等なしで、
[1,a,b,2]といった文字列と数値の混在したString型listを、
int型listに変換または要素毎の型で分ける方法をご存じないでしょうか。
ネットではライブラリーの追加なしの方法が見当たらなかったため、
ご教示いただけると幸いです。
よろしくお願いいたします。

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

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

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

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

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

momon-ga

2019/12/23 05:28

StringをInteger(int)に変換する方法は、わかりますか?
d_96a

2019/12/23 05:34

配列や通常の変数の変換方法は存じ上げています。
xebme

2019/12/23 06:04

ヒント:前処理がしっかりできるなら、Collectors#grroupingBy やpartitioningByなどを検討されては。
guest

回答2

0

ベストアンサー

文字列と数値の混在したString型list

の各要素が数値に変換できるかを見ていき、出来るならList<Integer>に変換したその要素を詰めてあげれば良いです。

つまり、下記機能を一つずつ調べていけば解決策は見えてくるはずです。

  • 各要素を参照する方法
  • 文字列(String)を数値(Integer)に変換できるか確認する方法

1点目は拡張forを使い、2点目はInteger.parseIntメソッドを使ってNumberFormatExceptionが発生するか否かで求められるかと思います。

投稿2019/12/23 05:35

BluOxy

総合スコア2663

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

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

d_96a

2019/12/23 05:43

エラーが起きていますが、こんな感じになるのでしょうか。 String型list:fizz Integer型list:num List num = new ArrayList(fizz.size()); for (int i = 0; i < fizz.size(); i++) { try { num.get(i)= Integer.parseInt(fizz.get(i)); }catch (NumberFormatException e) {} }
BluOxy

2019/12/23 05:51 編集

初期容量を持った空のリストを作る必要はありません。new ArrayList();をしてから、num.Add(Integer.parseInt(fizz.get(i)));で要素を追加していけば良いです。
d_96a

2019/12/23 05:54

List num = new ArrayList(fizz.size()); for (int i = 0; i < fizz.size(); i++) { try { num.add(Integer.parseInt(fizz.get(i))); }catch (NumberFormatException e) {} } eclipseで上記コードを入力すると、 「型 Integer のメソッド parseInt(String) は引数 (Object) に適用できません」 と表示されてしまいますが、修正箇所がおかしいでしょうか。
BluOxy

2019/12/23 06:11 編集

今気がつきました。Listを宣言する際はジェネリクス(Generics)という機能を使い、要素の型を指定してインスタンスを作るようにしてください。 例えばfizzを宣言する際はList<String> fizz = new ArrayList<String>();ですし、numの場合はList<Integer> num = new ArrayList<Integer>();です。 また、繰り返しますがnew ArrayList(fizz.size());では空の要素が生成されてしまうので、new ArrayList();で良いです。ここを直さない場合は、もし特定の要素が文字列から数値に変換できなかった場合に、numにごみとなる要素が残ることになります。
BluOxy

2019/12/23 06:04

Genericsを使わない場合、Object型の要素を持ったリストが生成されるため、そのエラーが発生しています。
d_96a

2019/12/23 06:08

ご指摘いただいた宣言方法を変更するとlistにゴミが含まれることなく、 数値のみのlistが出力されました。 詳しく説明していただきありがとうございます! 今はBluOxyさんのコメントが理解できていない箇所が多いので、 もっと勉強してコメントの意味や意図が理解できるようにしていきたいと思います。 最後までご丁寧に解説いただきありがとうございます。
swordone

2019/12/23 06:21

解決済みだけど、横槍入れます。 > new ArrayList(fizz.size());では空の要素が生成されてしまうので これは間違いです。このコンストラクタは初期容量を与えるだけで、ゴミなどは入りません。
BluOxy

2019/12/23 06:29

ご指摘ありがとうございます。 確かに、このコンストラクタはあくまで初期容量を指定するだけで、実際に要素を抱えている訳ではないようでした。撤回いたします。
guest

0

int型listに変換または要素毎の型で分ける方法をご存じないでしょうか。

そもそも、intはプリミティブなので、Listに入れることはできません

投稿2019/12/23 05:18

maisumakun

総合スコア145973

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

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

d_96a

2019/12/23 05:20

ということは上記の場合 配列に変換するほかないということでしょうか。
maisumakun

2019/12/23 05:23

いえ、IntegerであればListに入れられます。 …ただ、もう少し詳しく書いていただければ幸いです。
maisumakun

2019/12/23 05:34

> ネットではライブラリーの追加なしの方法が見当たらなかったため、 自分でコードを書いて、listの中身についてループ処理をする方法はわかりますか?
d_96a

2019/12/23 05:36

[1,a,b2]はString型listでそれをInteger型listに変換することが可能なのでしょうか??
maisumakun

2019/12/23 06:05

自分でコードを書けばもちろん可能です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問