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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

2回答

9491閲覧

Arrays.asListとは?

keikei0112

総合スコア31

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

1クリップ

投稿2016/03/12 13:00

yahoo知恵袋で他の人が書いていたjavaのソースコードですけど、その人が使ったArrays.asListがよくわかりません。

yahoo知恵袋での質問内容はコマンドライン引数から3つの数値を読み込ませ、値が小さい順に出力するプログラムが分かりません。JAVAです。

その人のソースコードは、

import java.util.Arrays;

public class Kadai {
public static void main(String[] args) {
String[] sort_target = args;
Arrays.sort(sort_target);

for (String output : Arrays.asList(sort_target)) {
System.out.println(output);
}
}
}

for (String output : Arrays.asList(sort_target)) {の部分を
for (String output : sort_target) {にしても問題なく動くんですけど、Arrays.asListの意味わかりますか?

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

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

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

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

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

guest

回答2

0

配列をListという型に変換するメソッドです。
配列はオブジェクトを、番号を付けてまとめているだけで、その集まりに対して何か操作するメソッド等がありません。そのようなメソッドを持つオブジェクトの集合の種類の一つがListという型なのです。

Listはリンク先のような便利なメソッドが多数存在し、Arrays.asListメソッドはこれらのメソッドを使うために配列をListに変換するために使われます。

またご自分でコードを入れ替えても問題なく動くと言っていた箇所ですが、これは拡張for文というものです。コロンの右側には、その型の配列、もしくはその型を扱うIterableインタフェース型を指定できます。ListはIterableを親に持つので、この部分に記述することができますし、先述の通り配列も指定できるので、エラーになりません。その2通りの書き方は、最終的にやっていることは全く同じです。

投稿2016/03/12 13:40

編集2016/03/13 00:31
swordone

総合スコア20651

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

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

keikei0112

2016/03/12 14:10

Arrays.asListは具体的にどうゆうときに使いますか?例があれがうれしいです。
Odacchi

2016/03/12 19:25 編集

今回の例は、メリットが特にありませんが、 既存のソースコードで配列が使われていて、保守や機能追加を行う場合、配列を以後Listに変換して扱うというのは良い選択であることも多いです。 なぜかというと、配列よりもリストを使った方がタイプセーフ(型安全)な実装ができます。 少し専門的ですが、下記のサイトなどが参考になります。 http://promamo.com/?p=4302 多くの現場では、 開発は一人で行うことよりも、複数人で開発することが多く、自分が書いたプログラムを他の人が機能追加や仕様変更などを行う可能性があります。 今回の場合でいうと、 Object[] objArray = sort_target objArray[1] = new Integer(3); などとしても(=他の開発者がしないとも限らない)、コンパイルエラーにはならず、実行してみるまでエラーがわかりません。 コンパイル時にエラーになってくれるか、実行時にエラーになってくれるか、 前者の方が生産性も高く、予期せぬバグの生まれにくいソースコードといえます。 ですので、配列は、知識として知っておいた方がいいですが、 実際の開発では、極力Listを使う方が良いプログラミングと言われます。 (ただし、基本型のintやdoubleなどは直接はList化できないため、配列を扱うことが多いですが。) また、配列ではなくコレクション(Listもこの中に含まれる)を使うメリットは、『ジェネリクス』を勉強されるとより理解できると思うので、キーワードだけ紹介しておきます。
guest

0

このソースを見る限り、
Arrays.asListを使う意味はないです。
質問者さんの仰っている通り、Arraysを使わず、そのままfor文にsort_targetを指定すればOKです。

投稿2016/03/12 13:50

YujiSakurai

総合スコア12

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

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

keikei0112

2016/03/12 14:10

Arrays.asListは具体的にどうゆうときに使いますか?例があれがうれしいです。
YujiSakurai

2016/03/12 15:36 編集

生成した配列に値を動的に追加したいときなどに使用します。 配列型は、生成時にあらかじめサイズが決まっているため、 指定した要素数を超えて値を格納することはできません。 例)配列型 String[] array = new String[2]; array[0]="1"; array[1]="2"; array[2]="3"; ← 配列のサイズが2のため無理。 一方、Arrays.asListを噛ましてList型(可変長リスト)に変換すれば、 addメソッドの使用で動的に値を追加できます。 List<String> list = new ArrayList<String>(Arrays.asList(array)); list.add("3"); ※Arrays.asList(array)のままでは固定長リストのままなので、  ArrayListの引数に渡すことで、可変長リストを生成している。 swordoneさん> ご指摘ありがとうございます!!訂正しました。
swordone

2016/03/12 14:54

Arrays.asListで生成されるListは固定長なので、直接このような使い方はできません。 このListをArrayListに渡すなどの必要があります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問