Java自学-集合框架 Collections

2019-12-13 06:38:33来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Java自学-集合框架 Collections

Java集合框架 工具类Collections

Collections是一个类,容器的工具类,就如同Arrays是数组的工具类

步骤 1 : 反转

reverse 使List中的数据发生翻转
反转

package collection;
   
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
   
public class TestCollection {
    public static void main(String[] args) {
        //初始化集合numbers
        List<Integer> numbers = new ArrayList<>();
         
        for (int i = 0; i < 10; i++) {
            numbers.add(i);
        }
         
        System.out.println("集合中的数据:");
        System.out.println(numbers);
         
        Collections.reverse(numbers);
         
        System.out.println("翻转后集合中的数据:");
        System.out.println(numbers);
         
    }
}

步骤 2 : 混淆

shuffle 混淆List中数据的顺序
混淆

package collection;
   
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
   
public class TestCollection {
    public static void main(String[] args) {
        //初始化集合numbers
        List<Integer> numbers = new ArrayList<>();
         
        for (int i = 0; i < 10; i++) {
            numbers.add(i);
        }
         
        System.out.println("集合中的数据:");
        System.out.println(numbers);
         
        Collections.shuffle(numbers);
         
        System.out.println("混淆后集合中的数据:");
        System.out.println(numbers);
         
    }
}

步骤 3 : 排序

sort 对List中的数据进行排序
排序

package collection;
   
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
   
public class TestCollection {
    public static void main(String[] args) {
        //初始化集合numbers
        List<Integer> numbers = new ArrayList<>();
         
        for (int i = 0; i < 10; i++) {
            numbers.add(i);
        }
         
        System.out.println("集合中的数据:");
        System.out.println(numbers);
 
        Collections.shuffle(numbers);
        System.out.println("混淆后集合中的数据:");
        System.out.println(numbers);
 
        Collections.sort(numbers);
        System.out.println("排序后集合中的数据:");
        System.out.println(numbers);
         
    }
}

步骤 4 : 交换

swap 交换两个数据的位置
交换

package collection;
   
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
   
public class TestCollection {
    public static void main(String[] args) {
        //初始化集合numbers
        List<Integer> numbers = new ArrayList<>();
         
        for (int i = 0; i < 10; i++) {
            numbers.add(i);
        }
         
        System.out.println("集合中的数据:");
        System.out.println(numbers);
 
        Collections.swap(numbers,0,5);
        System.out.println("交换0和5下标的数据后,集合中的数据:");
        System.out.println(numbers);
         
    }
}

步骤 5 : 滚动

rotate 把List中的数据,向右滚动指定单位的长度
滚动

package collection;
   
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
   
public class TestCollection {
    public static void main(String[] args) {
        //初始化集合numbers
        List<Integer> numbers = new ArrayList<>();
         
        for (int i = 0; i < 10; i++) {
            numbers.add(i);
        }
         
        System.out.println("集合中的数据:");
        System.out.println(numbers);
 
        Collections.rotate(numbers,2);
        System.out.println("把集合向右滚动2个单位,标的数据后,集合中的数据:");
        System.out.println(numbers);
         
    }
}

步骤 6 : 线程安全化

synchronizedList 把非线程安全的List转换为线程安全的List。

package collection;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
 
public class TestCollection {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
 
        System.out.println("把非线程安全的List转换为线程安全的List");
        List<Integer> synchronizedNumbers = (List<Integer>) Collections.synchronizedList(numbers);
 
    }
}

练习: 统计概率

首先初始化一个List,长度是10,值是0-9。
然后不断的shuffle,直到前3位出现
3 1 4

shuffle 1000,000 次,统计出现的概率

答案 :

package collection;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
 
public class TestCollection {
    public static void main(String[] args) {
        List<Integer> ls = new ArrayList<>();
 
        for (int i = 0; i < 10; i++) {
            ls.add(i);
        }
        int count = 0;
         
        for (int i = 0; i < 1000 * 1000; i++) {
            Collections.shuffle(ls);
            if(ls.get(0)==3 && ls.get(1)==1 && ls.get(2)==4)
                count++;
        }
        double rate = count/(1000d*1000);
        System.out.println("出现的概率是"+rate*100+"%");
 
    }
 
}

原文链接:https://www.cnblogs.com/jeddzd/p/12034366.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:对象流,它们是一对高级流,负责即将java对象与字节之间在读写的

下一篇:JPA中实现双向一对多的关联关系