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

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

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

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

Q&A

1回答

458閲覧

配列内の重複を見つけ、値の追加と削除をしたい

toon

総合スコア26

Java

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

0グッド

0クリップ

投稿2019/03/09 04:44

以下のようなJavaの配列があった場合、
[1]=[,][3]=[testA,1,3]としたいのですがうまくできません。

[1]=[testA,1]
[2]=[testB,2]
[3]=[testA,3]

どのようにすれば意図した通りにできるのかご教授お願いします。

for(int j = 0;j<k;j++){  if(j == 0){   one = test[j];  }else{   String item = test[j];   Pattern p = Pattern.compile(item);   Matcher m = p.matcher(one);   int num = 0;   int s = 0;   while(m.find(s)){    num++;    s = m.end();   }   if(num != 0){    if(lists.equals("")){     lists = String.valueOf(j) + ",";     multinums = String.valueOf(one.indexOf(item)) + ",";    }else{     lists = lists + String.valueOf(j) + ",";     multinums = multinums + String.valueOf(one.indexOf(item)) + ",";    }    count2++;   }else{    one = one + "," + test[j];   }  } }

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/03/09 05:28

> [1]=[,][3]=[testA,1,3] > [1]=[testA,1] > [2]=[testB,2] > [3]=[testA,3] 表現の仕方が独自的で何がしたいのかよく分かりません。 そしてtestA, testBとはなんですか?
A-pZ

2019/03/09 07:42

[1]=[,][3]=[testA,1,3] それぞれ=で区切った値を出す条件を書くと回答が得られるかもしれません。
shinami

2019/03/09 08:30 編集

以下の様な配列とは[1]=[testA,1]ですか?はたまた、ソース内のどれかの事ですか? =は何でしょうか?[,]の,は何でしょうか?データが入っていない配列? [1]の1は配列の数ですか? どう解釈したら良いのでしょうか? どう解釈したらよいのか分かりませんが [1]=[testA,1] → [1]=[,][3]=[testA,1,3]としたいのか、 [1]=[testA,1] → [1]=[testA,1] [2]=[testB,2] [3]=[testA,3]としたいのでしょうか? また、ソースの1行目のfor文の条件 j<k のkはint型だと思いますが何の数字が入っているのでしょう? String型変数oneやlistsはfor文より前の段階で何が入っているのでしょうか? 何となくtextAが重複している事から[testA,1,3]の所が重複しているデータを表しているのかとも思いますが、となると1と3も重複となるので[1]や[3]も配列に入っているデータって事ですか? という事になると[,]の,もデータ?それでも=は分かりませんが。
guest

回答1

0

Map を使って良いのか分かりませんが, とりあえずご質問には制限は書かれておりませんので.

java

1import java.util.*; 2 3public class One { 4 public static void main(String[] args) { 5 String[] test = { "", "testA,1", "testB,2", "testA,3" }; //[0]は不明 6 7 printArray("実行前:", test); 8 9 //index抽出 & 元データクリア 10 HashMap<String,List<Integer>> strIndexMap = new HashMap<>(); 11 for(int i=1; i<test.length; i++) { 12 String str = test[i].split(",")[0]; 13 List<Integer> indexList = strIndexMap.get(str); 14 if(indexList == null) { 15 indexList = new ArrayList<Integer>(); 16 strIndexMap.put(str, indexList); 17 } 18 indexList.add(i); 19 test[i] = ","; //クリア 20 } 21 //再構成 22 for(Map.Entry<String,List<Integer>> e : strIndexMap.entrySet()) { 23 List<Integer> indexList = e.getValue(); 24 int i = indexList.get(indexList.size()-1); 25 test[i] = e.getKey(); 26 for(int index : indexList) test[i] += ","+index; 27 } 28 29 printArray("実行後:", test); 30 } 31 //確認用 32 static void printArray(String premsg, String[] text) { 33 System.out.println(premsg); 34 for(int i=1; i<text.length; i++) System.out.println(" ["+i+"]=["+text[i]+"]"); 35 } 36}

投稿2019/03/11 08:05

jimbe

総合スコア12545

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問