一、Collections:集合框架的工具类
其中的方法都是静态的
排序方法演示
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; class ComparaByLeng implements Comparator<String>{ public int compare(String o1, String o2) { int t = o1.length() - o2.length(); return t==0?o1.compareTo(o2):t; } } public class Main { public static void main(String[] args) { Colletyions_Demo(); } public static void Colletyions_Demo(){ List<String> li = new ArrayList<String>(); li.add("asd"); li.add("d"); li.add("efasd"); li.add("efasd"); li.add("dsssfd"); li.add("xxxxd"); //System.out.println(list); //Collections.sort(list);//排序 //System.out.println(list); //sort :public static <T extends Comparable<? super T>> void sort(List<T> list) //模拟sort //Mysort(list); //System.out.println(list); Mysort(li,new ComparaByLeng()); System.out.println(li); Collections.sort(li,new ComparaByLeng()); System.out.println(li); } /*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){ Collections.swap(list, i, j);//工具类 交换 } } } } */ public static <T> void Mysort(List<T> li,Comparator<? super T> com) { for (int i = 0; i < li.size()-1; i++) { for (int j = i+1; j < li.size(); j++) { if(com.compare( li.get(i), li.get(j) ) > 0 ){ Collections.swap(li, i, j); } } } } }
二分查找、最值方法演示
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Main { public static void main(String[] args) { Colletyions_Demo(); } public static void Colletyions_Demo(){ List<String> li = new ArrayList<String>(); li.add("asd"); li.add("d"); li.add("efasd"); li.add("efasd"); li.add("dsssfd"); li.add("xxxxd"); Collections.sort(li); System.out.println(li); int index = Collections.binarySearch(li, "d"); System.out.println(index);//负数代表没找到 //获取最大值 String maxstrString = Collections.max(li); System.out.println("max = "+maxstrString); //获取最小值 String minstrString = Collections.min(li); System.out.println("min = "+minstrString); //取最长 String maxlenString = Collections.max(li,new ComparaByLeng()); System.out.println(maxlenString); } }
逆转、替换方法演示
import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.TreeSet; public class Main { public static void main(String[] args) { Colletyions_Demo(); } public static void Colletyions_Demo(){ //原理 // TreeSet<String> ts = new TreeSet<String>(new Comparator<String>() { // public int compare(String o1, String o2) { // // return o2.compareTo(o1); // } // }); //封装后 TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder()); ts.add("ad");ts.add("xad"); ts.add("fdagrrgd");ts.add("a"); ts.add("gedsad"); System.out.println(ts); //如果有比较器,逆转 //长度逆转 TreeSet<String> td = new TreeSet<String>(Collections.reverseOrder(new ComparaByLeng())); td.add("ad");td.add("xad"); td.add("fdagrrgd");td.add("a"); td.add("gedsad"); System.out.println(td); //replaceAll / reverse方法 List<String> al = new ArrayList<String>(); al.add("ads"); al.add("ds"); al.add("s"); Collections.reverse(al); System.out.println(al); Collections.replaceAll(al, "s", "y");//实际上 -> set(indexOf("s"),"y") System.out.println(al); } }
其他方法
1、fill(List<? super T> list, T obj)
使用指定元素替换指定列表中的所有元素。
Collections.fill(list,"asd");
2、shuffle(List<?> list)
使用默认随机源对指定列表进行置换
Collections.shuffle(list);随机
更多方法看API文档。。。
将非同步集合转成同步集合的方法
static
|
synchronizedCollection(Collection<T> c)
返回指定 collection 支持的同步(线程安全的)collection。 |
|
static
|
synchronizedList(List<T> list)
返回指定列表支持的同步(线程安全的)列表。 |
|
static
|
synchronizedMap(Map<K,V> m)
返回由指定映射支持的同步(线程安全的)映射。 |
|
static
|
synchronizedSet(Set<T> s)
返回指定 set 支持的同步(线程安全的)set。 |
|
static
|
synchronizedSortedMap(SortedMap<K,V> m)
返回指定有序映射支持的同步(线程安全的)有序映射。 |
|
static
|
synchronizedSortedSet(SortedSet<T> s)
返回指定有序 set 支持的同步(线程安全的)有序 set。 |
转换原理:
List list = new ArrayList(); List = MyCollections.synList(list);//返回一个同步的list class MyCollections{ public List synList (List list){ return new MyList(list); } private class MyList implements List{ private List list; private static final Object lock = new Object(); public MyList() { super(); // TODO Auto-generated constructor stub } public MyList(List list) { super(); 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); } } } }
时间: 2024-10-13 16:04:42