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

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

ただいまの
回答率

90.52%

  • Java

    13767questions

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

  • ArrayList

    89questions

    Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

ArrayListに任意の値を上限まで格納する方法について

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 1,091

hide09090909

score 49

javaのリストの中に任意のint型数値(1)を上限まで格納させたいのですが、方法が分かりません。
下記のソースを作ってみたのですが、当たり前のことながら1が一つ格納されているだけです。
どのように記述すればよいでしょうか?

//リスト生成
ArrayList<Integer> sample = new ArrayList<Integer>();
//リストに1を格納
sample.add(new Integer(1));
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • swordone

    2017/09/08 09:22

    上限とは何のことですか?

    キャンセル

  • motuo

    2017/09/08 09:23

    上限とは何を指すのでしょうか?Integer.MAX_VALUEで得られる2,147,483,647個の要素数を持つ配列を作りたいという事ですか?

    キャンセル

  • hide09090909

    2017/09/08 09:29

    上限という言葉は適切でなかったです。 リストの中の要素全てにデフォルトで1を格納したいです。

    キャンセル

  • swordone

    2017/09/08 09:40

    今度は「全て」がどういうことかわかりません。

    キャンセル

回答 3

+1

import java.util.*;

ArrayList<Integer> sample = new ArrayList<>(Collections.nCopies(7, 1));
System.out.println(sample.size() +" "+ sample);
//=> 7 [1, 1, 1, 1, 1, 1, 1]

もう一つ

import java.util.*;

//ArrayList作成(ここは適当に)
ArrayList<Integer> sample = new ArrayList<>(Arrays.asList(new Integer[7]));
System.out.println(sample.size() +" "+ sample);
//=> 7 [null, null, null, null, null, null, null]

//1で埋める
Collections.fill(sample, 1);
System.out.println(sample.size() +" "+ sample);
//=> 7 [1, 1, 1, 1, 1, 1, 1]

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

import java.util.ArrayList;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Q91638 {

    public static void main(String[] args) {
        ArrayList<Integer> list = Stream.generate(() -> 1).limit(10)
                .collect(Collectors.toCollection(ArrayList::new));
        System.out.println(list);
    }

}


本当なら型はListにしたほうがいいのですが。

ついでに言いますが、Integerを使う場合はnewする意味がありません。オートボクシング任せにするか、Integer.valueOf(int)を使ってください。Integerクラス内でプールされているIntegerのインスタンスを使いまわすことができ、メモリの節約になります。Integerは不変クラスなので、同じ値を表す異なるインスタンスを生成するのはただのメモリの無駄です。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

check解決した方法

-1

すみません。自己解決しました。
for分で回せばよいだけでした。
ArrayList<Integer> sample = new ArrayList<Integer>(1000);
for(int i; i < sample.size(); ++i){
sample.add(new Integer(1));
}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/08 09:49

    これはリストが空の場合は1度も実行されませんし、1つでも入っていれば無限ループになります。

    キャンセル

  • 2017/09/08 09:51

    本当ですね。どうすればよいかわかりますでしょうか?

    キャンセル

  • 2017/09/08 09:54

    少し修正したのですが、これでも無理ですか?

    キャンセル

  • 2017/09/08 09:55

    そもそもListは要素数が可変なので、「上限」とか「すべての要素」とかが意味不明になります。

    キャンセル

  • 2017/09/08 10:00

    ArrayListのコンストラクタに渡すint整数は、「内部的に保持する配列のサイズの初期値」であって、「リストのサイズ」とは無関係です。
    ArrayListが保持する配列のサイズを超えて要素が追加される場合には配列を作り直して、そこに今までの要素を移すという作業が入るため、大量の要素を入れようとする場合は配列の拡張が繰り返し起こります。
    それを防ぐため、あらかじめ多くのサイズを取っておくための引数がこの引数の意味です。
    Listのsize()はあくまで格納されている要素数を返すものなので、いくら内部の配列のサイズを増やそうが要素が入っていなければ0です。

    キャンセル

  • 2017/09/08 10:01

    各要素に任意の値を初期値として格納した、任意の要素数のArrayListを作成するということであれば、Arrays.fillを使う方法もあります。

    Integer[] array = new Integer[count];
    Arrays.fill(array, 1);
    ArrayList sample = new ArrayList(Arrays.asList(array));

    ただ、初期値を設定する処理は無駄になることが多々あるので、可能ならば、
    値が無かった場合の処理を追加することで、初期値設定をしないように修正したほうが良いかと思います。

    キャンセル

  • 2017/09/08 10:08

    >>moredeepさん
    回答として書いた方が良いのでは?

    キャンセル

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Java

    13767questions

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

  • ArrayList

    89questions

    Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。