WindowsのMsys2のbash環境で、「cygheap base mismatch detected」というエラーが起きて、ハマりにハマって解決できず、年末から3日がぐらいを無駄に過ごしてしまったボクです(涙)。
Java のアルゴリズムを勉強したいと思うこと、あるあるだよね~、え?無いですか?
というわけで、今回は、Javaの勉強で、レッツ~トライ。
Javaで文字列検索
まぁ、StringのArrayListの文字列の仕分けですかね~
⇧ 上記サイト様を参考にさせていただきました。
package test; import java.util.ArrayList; import java.util.Collections; public class TestJava { public static void main(String[] args) { // 有効・無効が混在した文字列 ArrayList<String> identifierList = new ArrayList<>(); Collections.addAll(identifierList, "for", "Class", "i", "num", "public", "a"); // 無効な文字列(除外対象:ブラックリスト) ArrayList<String> excludeList = new ArrayList<>(); Collections.addAll(excludeList, "class", "for", "if", "public", "static", "while"); ArrayList<String> valid = new ArrayList<>(); // 有効 ArrayList<String> invalid = new ArrayList<>(); // 無効 for(String word : identifierList) { boolean isValid = true; // 無効な文字列の検索 for(String ex : excludeList) { // 無効な文字列が見つかった場合 if(word.equals(ex)) { invalid.add(word); isValid = false; break; } } // 有効な文字列が見つからなかった場合(無効な文字列が見つからなかった場合) if(isValid) { valid.add(word); } } System.out.println("有効 : " + valid); System.out.println("無効 : " + invalid); } }
Javaで文字検索
package test; import java.util.Arrays; public class TestJavaChar { public static void main(String[] args) { // 文字の配列 char chars[] = { 'p', 'e', 'n', 'p', 'i', 'n', 'e', 'a', 'p', 'p', 'l', 'e', 'a', 'p', 'p', 'l', 'e', 'p', 'e', 'n' }; char key = 'p'; // 検索文字 int[] indexArray = new int[1]; int[] indexArrayVariable = null; int count = 0; for (int i = 0; i < chars.length; i++) { // 初回の対象文字 if (chars[i] == key && count == 0) { indexArray[count] = i; count++; // 初回以降の対象文字 } else if (chars[i] == key) { if (indexArrayVariable != null) { indexArrayVariable = Arrays.copyOf(indexArrayVariable, ++count); } else { indexArrayVariable = Arrays.copyOf(indexArray, ++count); } indexArrayVariable[indexArrayVariable.length - 1] = i; } } boolean firstFlg = false; for (int i : indexArrayVariable) { if(firstFlg) { System.out.print(", "); } System.out.print(i); firstFlg = true; } } }
拡張for文は、indexが無いから、最初とか最後で処理を変えたい時がなかなか面倒ですかね、まぁ、普通は、JavaScriptでデータ連携してHTMLでテキスト表示が多いと思うから、Javaでテキストを表示とかって機会はそうそう無いとは思うけれど。
Javaでできること、もっといろいろ知りたいですね。というか、ベストプラクティスを知りたいですね、悪手を実践してる気がしてしょうがないけど、判断できんです...
今回はこのへんで。