質問するログイン新規登録

質問編集履歴

3

実行結果の追記

2019/08/07 08:37

投稿

nanimowakaranai
nanimowakaranai

スコア20

title CHANGED
File without changes
body CHANGED
@@ -78,4 +78,9 @@
78
78
  実行結果
79
79
  fruit apple:banana:dog:cat
80
80
  pet apple:banana:dog:cat
81
+ ```
82
+ ```ここに言語を入力
83
+ 想定実行結果
84
+ fruit apple:banana
85
+ pet dog:cat
81
86
  ```

2

追加

2019/08/07 08:37

投稿

nanimowakaranai
nanimowakaranai

スコア20

title CHANGED
File without changes
body CHANGED
@@ -7,6 +7,10 @@
7
7
  この場合全く新しいリストを繰り返し処理で作成して最終的に
8
8
  key→果物 value→(りんご、ばなな)
9
9
  key→動物 value(このvalueと↑のvalueは違う変数)→(像、キリン)とするにはどうすればいいのでしょうか
10
+
11
+ 追記
12
+ 問題のコードを追加しました。書き方が気持ち悪いというのは自覚しているのですが今回は見逃してください・・・
13
+
10
14
  ```java
11
15
  import java.io.*;
12
16
  import java.lang.reflect.Array;

1

コード追加

2019/08/07 08:00

投稿

nanimowakaranai
nanimowakaranai

スコア20

title CHANGED
File without changes
body CHANGED
@@ -6,4 +6,72 @@
6
6
  動物 像、キリンとなってしまいます。原因自体は理解していて新しくnew 宣言したvalue変数に新しいリストを追加していってもその前のmapのkeyのvalueと同じ変数であるから結局最後に追加していったvalueのリストと同じ中身になってしまってしまうんだと思います。
7
7
  この場合全く新しいリストを繰り返し処理で作成して最終的に
8
8
  key→果物 value→(りんご、ばなな)
9
- key→動物 value(このvalueと↑のvalueは違う変数)→(像、キリン)とするにはどうすればいいのでしょうか
9
+ key→動物 value(このvalueと↑のvalueは違う変数)→(像、キリン)とするにはどうすればいいのでしょうか
10
+ ```java
11
+ import java.io.*;
12
+ import java.lang.reflect.Array;
13
+ import java.nio.file.Files;
14
+ import java.nio.file.Path;
15
+ import java.nio.file.Paths;
16
+ import java.util.*;
17
+
18
+
19
+
20
+ public class Test {
21
+
22
+
23
+ public static void main(String args[]) {
24
+ List<String> value = new ArrayList<>();
25
+ List<List<String>> values = new ArrayList<>();
26
+ List<String> lines = new ArrayList<>();
27
+
28
+ HashMap<String, List<String>> tsv = new HashMap<>();
29
+ try {
30
+ Path path = Paths.get("test.tsv");
31
+ lines = Files.readAllLines(path);
32
+
33
+ } catch (IOException ie) {
34
+ System.out.println("入出力エラーです");
35
+ }
36
+ Test.sort_tsv(tsv,value,values,lines);
37
+ Test.solve(tsv,value);
38
+
39
+
40
+ }
41
+ public static void sort_tsv(HashMap<String, List<String>> tsv, List<String> child_value, List<List<String>> parent_value, List<String> line){
42
+ for(int i = 0; i < line.size();i++){
43
+ String[] split_line = line.get(i).split("\t", 0);
44
+ if (tsv.containsKey(split_line[0])) {
45
+ tsv.get(split_line[0]).add(split_line[1] + ":");
46
+ tsv.put(split_line[0], tsv.get(split_line[0]));
47
+ } else {
48
+ parent_value.add(child_value);
49
+ child_value.add(i, split_line[1] + ":");
50
+ tsv.put(split_line[0], parent_value.get(parent_value.size() - 1));
51
+ }
52
+ }
53
+ }
54
+ public static void solve(HashMap<String,List<String>> tsv, List<String> child_value){
55
+ for (String key : tsv.keySet()) {
56
+ String val = String.join("", child_value);
57
+ StringBuilder value_cut = new StringBuilder(val);
58
+ value_cut.setLength(value_cut.length() - 1);
59
+ System.out.println(key + "\t" + value_cut);
60
+ }
61
+ }
62
+ }
63
+
64
+
65
+ ```
66
+ ```tsv
67
+ fruit apple
68
+ fruit banana
69
+ pet dog
70
+ pet cat
71
+ ```
72
+
73
+ ```実行結果
74
+ 実行結果
75
+ fruit apple:banana:dog:cat
76
+ pet apple:banana:dog:cat
77
+ ```