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

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

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

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

Q&A

解決済

2回答

12240閲覧

Listをクラス型で利用する方法について

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

1グッド

0クリップ

投稿2020/08/13 21:42

編集2020/08/13 23:20

#質問1
Listをクラス型で作成し、理想結果のようにしたいです。

##現状ソース

Java

1package test.list; 2 3import java.util.ArrayList; 4 5public class List_Main { 6 7 public static void main(String[] args) { 8 9 String id="001"; 10 String name="太郎"; 11 String gender="男"; 12 List_SG lsg = new List_SG(id,name,gender); 13 14 ArrayList<List_SG> list = new ArrayList<>(); 15 list.add(lsg); 16 17 System.out.println(list.get(1)); 18 System.out.println(list.get(2)); 19 System.out.println(list.get(3)); 20 21 } 22 23} 24

Java

1package test.list; 2 3public class List_SG { 4 private String id; 5 private String name; 6 private String gender; 7 8 public List_SG(String id, String name, String gender) { 9 this.id = id; 10 this.name = name; 11 this.gender = gender; 12 } 13 public String getId() { 14 return id; 15 } 16 public void setId(String id) { 17 this.id = id; 18 } 19 public String getName() { 20 return name; 21 } 22 public void setName(String name) { 23 this.name = name; 24 } 25 public String getGender() { 26 return gender; 27 } 28 public void setGender(String gender) { 29 this.gender = gender; 30 } 31 32}

###理想結果
001
太郎

A-pZ👍を押しています

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

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

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

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

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

m.ts10806

2020/08/13 21:50

「クラス型」とは…? コードはマークダウンのcode機能を利用してご提示ください。 要件の違う質問はなるべく分けて投稿してください。
退会済みユーザー

退会済みユーザー

2020/08/13 22:08

List<クラス型> list; Map<クラス型,クラス型> map; のようなイメージです。
m.ts10806

2020/08/13 22:45

ではまず、そのとおりやってみては。 あと2点、ご対応ください。質問は編集できますので。
dodox86

2020/08/14 00:54

もうひとつ謎な仕様(やりたいこと)ですね。list.get(1)、list.get(2)...はそれぞれ0から数えて1番目の要素2番目の要素を取得するメソッドです。対して求めたい出力は、0番目の要素の持つフィールド、id, name, gender を改行付きで出力しています。どちらが主体なのか。 例えば出力として、複数の要素があるなら 001 太郎 男 002 花子 女 ...などと続くのか。
退会済みユーザー

退会済みユーザー

2020/08/14 05:29

質問がわかりづらく申し分けございません。 id,name,genderを一つのグループと見立てて、操作できるようにしたいと思っています。 理想結果では改行つきで出力していますが、実際の出力結果は、 001,太郎,男 などでも良いです。 今回、Setter,Getterクラス(List_SG)内で定義したid,name,genderはString型で定義していますが、 int型で例えばnum1,num2,num3と定義し、それぞれに、1,2,3を代入したものをlist化して、全体に10を足して結果を返す(11,12,13が結果として出力される)とかができるようになること目指していいます。
guest

回答2

0

「質問への追記・修正」欄での質問者さん[2020/08/14 14:29]のコメントより:

id,name,genderを一つのグループと見立てて、操作できるようにしたいと思っています。

id,name,genderList_SGクラスのフィールドなので、List_SGでの操作(メソッド)で求めたい文字列にするのが普通に考えて自然です。ですので、それ用のメソッドを作ります。全てのクラスのスーパークラスであるjava.lang.ObjecttoString()メソッドがあるので、例えばこれをオーバーライドしておくとList_SGクラスのインスタンスオブジェクトに対してtoStringを実行するような操作で自動的に文字列化します。ですので、クラスの設計上、適切であれば使うと良いです。

package test.list;を除去し、クラス名List_SGをシンプルにSGにリネームするなどして作ったコード例を以下に示します。

Java

1import java.util.ArrayList; 2 3//public class List_SG { 4class SG { 5 private String id; 6 private String name; 7 private String gender; 8 9 public SG(String id, String name, String gender) { 10 this.id = id; 11 this.name = name; 12 this.gender = gender; 13 } 14 15 public String getId() { 16 return id; 17 } 18 19 public void setId(String id) { 20 this.id = id; 21 } 22 23 public String getName() { 24 return name; 25 } 26 27 public void setName(String name) { 28 this.name = name; 29 } 30 31 public String getGender() { 32 return gender; 33 } 34 35 public void setGender(String gender) { 36 this.gender = gender; 37 } 38 39 public String toContentString(String sepl) { 40 java.util.StringJoiner sj = new java.util.StringJoiner(sepl); 41 sj.add(id); 42 sj.add(name); 43 sj.add(gender); 44 return sj.toString(); 45 } 46 47 // 既定のtoString()をオーバーライド 48 @Override 49 public String toString() { 50 return toContentString(","); 51 } 52} 53 54public class Main { 55 56 public static void main(String[] args) { 57 58 String id = "001"; 59 String name = "太郎"; 60 String gender = "男"; 61 SG sg = new SG(id,name,gender); 62 63 ArrayList<SG> list = new ArrayList<>(); 64 list.add(sg); 65 list.add(new SG("002", "花子", "女")); 66 list.add(new SG("003", "信長", "男")); 67 list.add(new SG("004", "濃姫", "女")); 68 69 // 1. ArrayList<SG>#get で。SGオブジェクトはtoString()で暗黙的に文字列化。 70 System.out.println(list.get(0)); 71 System.out.println(list.get(1)); 72 System.out.println(list.get(2)); 73 System.out.println(list.get(3)); 74 75 // 2. 拡張for文で列挙。各フィールドの値は"|"区切り。 76 for (SG item: list) { 77 System.out.println(item.toContentString("|")); 78 } 79 80 // 3. Java Stream APIで列挙。各フィールドの値は"\n"区切り。 81 list.stream().forEach((item) -> System.out.println(item.toContentString("\n"))); 82 } 83}

実行例を以下に示します。コードと照らし合わせてみれば何が起こっているか分かると思います。

sh

1$ javac -version 2javac 1.8.0_252 3$ javac Main.java 4$ java Main 5001,太郎,男 6002,花子,女 7003,信長,男 8004,濃姫,女 9001|太郎|男 10002|花子|女 11003|信長|男 12004|濃姫|女 13001 14太郎 1516002 17花子 1819003 20信長 2122004 23濃姫 2425$

投稿2020/08/14 17:45

dodox86

総合スコア9183

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

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

dodox86

2020/08/14 17:50

(一応、念の為)コード例はあくまでサンプルなので、SGクラスとMainクラスを1つのファイル内に収めています。Javaのコーディング作法としては質問者さんの元のコードのようにクラス別にファイルを分けるのが正当です。
guest

0

ベストアンサー

SG型をListやMapに格納してから、順次表示することでしょうか。

SGを生成する

java

1SG generateSG(String id, String name, String gender) { 2 SG sg = new SG(); 3 sg.setId(id); 4 sg.setName(name); 5 sg.setGender(gender); 6 return sg; 7}

ListやMapインタフェースに変換する

java

1import java.util.ArrayList; 2import java.util.LinkedHashMap; 3import java.util.List; 4import java.util.Map; 5 6 7List<String> list(SG sg) { 8 List<String> list = new ArrayList<>(); 9 list.add(sg.getId()); 10 list.add(sg.getName()); 11 list.add(sg.getGender()); 12 return list; 13} 14 15Map<String, String> map(SG sg) { 16 Map<String, String> map = new LinkedHashMap<>(); 17 map.put("id" , sg.getId()); 18 map.put("name", sg.getName()); 19 map.put("gender", sg.getGender()); 20 return map; 21}

ListやMap型を出力する

java

1List<String> list = list(sg); 2list.stream().forEach(System.out::println); 3 4Map<String, String> map = map(sg); 5map.entrySet().stream().forEach(entry -> { 6 System.out.println(entry.getKey()+", "+entry.getValue()); 7});

投稿2020/08/13 23:16

A-pZ

総合スコア12011

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問