前提・実現したいこと
出力のidという文字を揃えたいのですが¥tでやってもうまくいかなかったのでどなたかアイデアある方助言をお願いしたいです。いじる箇所はTshirtクラスのtoStringでお願いしたいです。
発生している問題・エラーメッセージ
Tshirt [name=ハイクオリティーTシャツ, id=am5032 price=1210, maker=United Athle] Tshirt [name=プレミアムTシャツ, id=am5034 price=1870, maker=United Athle] Tshirt [name=メリノウールTシャツ, id=am5720 price=5000, maker=Sheep Run]
該当のソースコード
Java
1package exer5; 2 3import java.util.LinkedList; 4import java.util.List; 5 6public class Exer25_1 { 7 public static void main(String[] args) { 8 List<Tshirt> t=new LinkedList<>(); 9 t.add(new Tshirt("クルーネックTシャツ","am1021",4455,"nano・universe")); 10 t.add(new Tshirt("マックスプレス","am2033",3250,"MONOVO")); 11 t.add(new Tshirt("ハイクオリティーTシャツ","am5032",1210,"United Athle")); 12 t.add(new Tshirt("プレミアムTシャツ","am5034",1870,"United Athle")); 13 t.add(new Tshirt("ビーフィーTシャツ","am2589",3190,"Hanes")); 14 t.add(new Tshirt("ビーフィークルーネックTシャツ","am2593",2750,"Hanes")); 15 t.add(new Tshirt("メリノウールTシャツ","am5720",5000,"Sheep Run")); 16 t.add(new Tshirt("ベーシックTシャツ","am4604",1995,"Champion")); 17 18 t.stream() 19 .filter(tl->tl.getId().contains("am5")) 20 .forEach(System.out::println); 21 } 22 23} 24
package exer5; public class Tshirt { private String name; // 製品名 private String id; // ID番号 private int price; // 価格 private String maker; // メーカー public Tshirt(String name, String id, int price, String maker) { super(); this.name = name; this.id = id; this.price = price; this.maker = maker; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public String getMaker() { return maker; } public void setMaker(String maker) { this.maker = maker; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Tshirt other = (Tshirt) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; return true; } @Override public String toString() { return "Tshirt [name=" + name + ", \t id=" + id + "\nprice=" + price +",\tmaker=" + maker + "]"; } }
nameの文字数次第でズレ幅が変わってくる為、toStringで解決するのは無理だと思います。
代替案としては...
- nameより先にidを表示する
- nameを規定の文字数でtrimする
などが考えられます。
回答2件
あなたの回答
tips
プレビュー