集合フレーム-ツールクラス_Collections
18188 ワード
Collections:コレクションフレームワークのツールクラスです.中の方法はすべて静的です.
コンパレータ:
sort()およびswap()メソッド:
binarySearch():半角検索
最大値を取得:
逆順序
置換:
fill()メソッドコレクション内の要素をアンバーに置き換えて指定した要素に置き換えます
非同期集合を同期集合に変換する原理:
コンパレータ:
import java.util.Comparator;
public class ComparatorByLength implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
int temp = o1.length() - o2.length();
return temp==0?o1.compareTo(o2): temp;
}
}
sort()およびswap()メソッド:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CollectionsDemo {
public static void main(String[] args) {
demo();
}
public static void demo(){
List<String> list = new ArrayList<String>();
list.add("abcde");
list.add("cba");
list.add("aa");
list.add("zzz");
list.add("cba");
list.add("nbaa");
System.out.println(list);
// list 。
//Collections.sort(list);// Collections
mySort(list);//
//mySort(list,new ComparatorByLength());//
//Collections.sort(list,new ComparatorByLength());
System.out.println(list);
}
public static <T extends Comparable<? super T>> void mySort(List<T> list){
for (int i = 0; i < list.size()-1; i++) {
for (int j = i+1; j < list.size(); j++) {
if(list.get(i).compareTo(list.get(j))>0){
/*T temp = list.get(i);
list.set(i, list.get(j));
list.set(j, temp);*/
Collections.swap(list, i, j);
}
}
}
}
}
binarySearch():半角検索
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CollectionsDemo {
public static void main(String[] args) {
demo();
}
public static void demo(){
List<String> list = new ArrayList<String>();
list.add("abcde");
list.add("cba");
list.add("aa");
list.add("zzz");
list.add("cba");
list.add("nbaa");
System.out.println(list);
Collections.sort(list);
// , ,
int index = Collections.binarySearch(list, "cba");
System.out.println("index="+index);
}
}
最大値を取得:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class CollectionsDemo {
public static void main(String[] args) {
demo();
}
public static void demo(){
List<String> list = new ArrayList<String>();
list.add("abcde");
list.add("cba");
list.add("aa");
list.add("zzz");
list.add("cba");
list.add("nbaa");
System.out.println(list);
// 。
String max = Collections.max(list,new ComparatorByLength());// ,
System.out.println("max="+max);
}
}
逆順序
import java.util.Collections;
import java.util.Comparator;
import java.util.TreeSet;
public class CollectionsDemo {
public static void main(String[] args) {
demo();
}
public static void demo() {
//
/*TreeSet<String> ts = new TreeSet<String>(new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
int temp = o2.compareTo(o1);
return temp;
}
});*/
// ( Collections )
TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder());
//TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new ComparatorByLength()));
ts.add("abc");
ts.add("hahaha");
ts.add("zzz");
ts.add("aa");
ts.add("cba");
System.out.println(ts);
}
}
置換:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CollectionsDemo {
public static void main(String[] args) {
demo();
}
public static void demo() {
List<String> list = new ArrayList<String>();
list.add("abcde");
list.add("cba");
list.add("zhangsan");
list.add("zhaoliu");
list.add("xiaoqiang");
System.out.println(list);
Collections.replaceAll(list, "cba", "nba"); // set(indexOf("cba"),"nba");
System.out.println(list);
}
}
fill()メソッドコレクション内の要素をアンバーに置き換えて指定した要素に置き換えます
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CollectionsDemo {
public static void main(String[] args) {
demo();
}
public static void demo() {
List<String> list = new ArrayList<String>();
list.add("abcde");
list.add("cba");
list.add("zhangsan");
list.add("zhaoliu");
list.add("xiaoqiang");
System.out.println(list);
Collections.fill(list, "cc");
System.out.println(list);
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CollectionsDemo {
public static void main(String[] args) {
demo();
}
public static void demo() {
List<String> list = new ArrayList<String>();
list.add("abcde");
list.add("cba");
list.add("zhangsan");
list.add("zhaoliu");
list.add("xiaoqiang");
System.out.println(list);
Collections.shuffle(list);//
System.out.println(list);
}
}
非同期集合を同期集合に変換する原理:
class MyCollections{
public static List synList(List list){
return new MyList(list);
}
private class MyList implements List{
private List list;
private static final Object lock = new Object();
MyList(List list){
this.list = list;
}
public boolean add(Object obj){
synchronized(lock){
return list.add(obj);
}
}
public boolean remove(Object obj){
synchronized(lock){
return list.remove(obj);
}
}
}
}
List list = new ArrayList();// 。
list = MyCollections.synList(list);// list.