StartUp.java
package test;
/*
* startup class
*/
public class StartUp {
// mainメソッドがプログラムの起動時に実行される
public static void main(String[] args){
// 画面を表示
MainFrame mainFrame = new MainFrame();
mainFrame.setVisible(true);
}
}
MainFrame.java
package test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
/*
* main frame class
*/
public class MainFrame extends JFrame {
private static final long serialVersionUID = 1L;
/*
* main frame
*/
public MainFrame() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(400, 300);
setTitle("てすと");
setLocationRelativeTo(null);
List<String> list = new ArrayList<String>();
list.add("あさ");
list.add("あい");
list.add("うえ");
// 自作クラスPredicateのListをフィルタするWhereメソッドで条件に合う項目を抽出
List<String> result = (List<String>) Predicate.Where(list,
new IPredicate<String>() {
@Override
public boolean Calc(String obj) {
return obj.startsWith("あ");
}
});
// ダイアログにメッセージを表示
// 自作クラスPredicateのListを結合するJoinメソッドで項目を結合
JOptionPane.showConfirmDialog(this, Predicate.Join(",", result), "確認",
JOptionPane.OK_OPTION, JOptionPane.QUESTION_MESSAGE);
}
}
IPredicate.java
package test;
// genericを実装したインターフェース
// classの場合も同じように記述可能
public [[interface]] IPredicate<T> {
boolean Calc(T obj);
}
Predicate.java
package test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public final class Predicate {
// genericを実装したstaticメソッド
// predicateの条件を満たす項目をtargetから抽出して返却
public static <T> Collection<T> Where(Collection<T> target,
IPredicate<T> predicate) {
Collection<T> retVal = new ArrayList<T>();
for (T item : target) {
if (predicate.Calc(item)) {
retVal.add(item);
}
}
return retVal;
}
// target同士の間にseparatorを挟んで結合したものを返却
public static <T> String Join(String separator, Collection<T> target) {
StringBuilder sb = new StringBuilder();
if (target != null) {
Iterator<T> iterator = target.iterator();
if (iterator.hasNext()) {
sb.append(iterator.next().toString());
while (iterator.hasNext()) {
sb.append(separator + iterator.next().toString());
}
}
}
return sb.toString();
}
}
最終更新:2014年02月06日 23:35