rerverse
package day19; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class CollectionsDemo { public static void main(String[] args) { reverse(); } public static void reverse(){ List<String> list =new ArrayList<String >(); list.add("aaaaa"); list.add("bbbbb"); list.add("cccc"); list.add("ppppp"); for(int i =0;i<list.size();i++){ System.out.println(list.get(i)); } Collections.reverse(list); for(int i =0;i<list.size();i++){ System.out.println(list.get(i)); } } } /*** * aaaaa * bbbbb * cccc * ppppp * * 逆序后 * ppppp * cccc * bbbbb * aaaaa */
reverseOrder()
自己实现:
// 逆序 public static void reveserOrder(){ TreeSet<String > treeSet =new TreeSet<String >(new Comparator<String>() { @Override public int compare(String s, String t1) { int temp =t1.compareTo(s);//逆序 (s.compareTo(tl);)自然序 return temp ; } }) ; treeSet.add("aaaaa"); treeSet.add("bbbbb"); treeSet.add("cccc"); treeSet.add("zzzzz"); System.out.println(treeSet);[zzzzz, cccc, bbbbb, aaaaa] } }
使用 TreeSet<String > treeSet =new TreeSet<String >(Collections.reverseOrder()) ;
// 逆序 public static void reveserOrder(){ /* TreeSet<String > treeSet =new TreeSet<String >(new Comparator<String>() { @Override public int compare(String s, String t1) { int temp =t1.compareTo(s);//逆序 return temp ; } }) ;*/ TreeSet<String > treeSet =new TreeSet<String >(Collections.reverseOrder()) ; treeSet.add("aaaaa"); treeSet.add("bbbbb"); treeSet.add("cccc"); treeSet.add("zzzzz"); System.out.println(treeSet);//[zzzzz, cccc, bbbbb, aaaaa] } }
将一个已有自定义的比较器 逆转
public static void reveserOrderByLength(){
TreeSet<String > treeSet =new TreeSet<String >(Collections.reverseOrder(new CompareByLength())) ;
treeSet.add("aaaaa");
treeSet.add("bbbbb");
treeSet.add("cccc");
treeSet.add("zzzzzaaaaaaaaa");
System.out.println(treeSet);
}
replaceAll 将表中的值替换成另外一个值
内部实现原理 set( indexOf("aaaaa"),"AAAAA");
public static void repalaceAll(){ List<String> list =new ArrayList<String >(); list.add("aaaaa"); list.add("bbbbb"); list.add("cccc"); list.add("pppppaaaaaa"); Collections.replaceAll(list,"aaaaa","AAAAA"); System.out.println(list); }
fill 全部替换 可用于全部初始化一次:
public static void fill(){ List<String> list =new ArrayList<String >(); list.add("aaaaa"); list.add("bbbbb"); list.add("cccc"); list.add("pppppaaaaaa"); Collections.fill(list,"AAAAA"); System.out.println(list); }
shuffle 使用指定的随机源随机排列指定的列表
-
-
。
-
public static void shuffle(){ List<String> list =new ArrayList<String >(); list.add("aaaaa"); list.add("bbbbb"); list.add("cccc"); list.add("pppppaaaaaa"); Collections.shuffle(list); System.out.println(list);//[pppppaaaaaa, cccc, aaaaa, bbbbb] 随机 放在list 有啥用? 扑克牌洗牌 }
(面试题)多线程 怎么办?
非同步的集合,自己加锁
ArraList 与Vector 有什么区别呀?
1.一个效率高一个效率低 2,一个同步 ,一个不同步。3.ArrayList 替代 Vector ,Vector 不用了。
ArrayList 怎么变成同的? 1.自己加锁 2.集合框架中给我们提供了 Collections的静态方法sychoniedxxxx可以实现非同步集合转为同步集合。
package day19;
//自己实现同步的List
import java.util.List;
List list =new ArrayList();
list=MyCollections.synList(list);
public class MyCollections {
private static final Object lock= new Object();
private List list;
public static List synList(List list){
return new MyList(list);
}
class MyList implements List {
MyList (List mlist){
list=mlist;
}
@Override
public Object get(int i) {
synchronized (lock){//加锁
return list.get(i);
}
}
}
@Override
public int size() {
synchronized (lock){//加锁{
return list.size();
}
}
}
Collections 已经实现了这种功能。