Java基础之集合框架--Collections.reverse()方法

来源:互联网 发布:诺基亚n900运行windows 编辑:程序博客网 时间:2024/06/06 03:48


package newFeatures8;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class CollectionsDemo {public static void main(String[] args) {reverseDemo();}public static void reverseDemo(){List<String> list=new ArrayList<>();list.add("abcd");//String类本身就是实现了Comparable接口list.add("kkkkk");list.add("qq1");list.add("z");list.add("zz1");list.add("zz");list.add("qq1");list.add("qq1");list.add("qq2");list.sort(null);//Collections.sort(list);System.out.println("原集合是:"+list);//Collections.reverse(list);swap(list);System.out.println("交换后的集合是:"+list);}/** * @author ljh * @param nothing * @return void * @since 1.2 * @description 在List中前后两两交换元素,相当于reverse反转</br> * list.set(int index,E element)</br> * public E set(int index,E element)//返回:  以前位于该指定位置上的元素  *  */public static void swap(List<String> list){int size=list.size();//折半交换,只需要循环一半即可int mid=size>>1;//相当于/2for (int i = 0; i < mid; i++) {   //分解步骤:  //String endElement=list.set(size-1-i, list.get(i));  //list.set(i, endElement);list.set(i, list.set(size-1-i,list.get(i)));}} }

reverse方法的源码:

 @SuppressWarnings({"rawtypes", "unchecked"})    public static void reverse(List<?> list) {        int size = list.size();        if (size < REVERSE_THRESHOLD || list instanceof RandomAccess) {            for (int i=0, mid=size>>1, j=size-1; i<mid; i++, j--)                swap(list, i, j);//请看下面swap方法        } else {            // instead of using a raw type here, it's possible to capture            // the wildcard but it will require a call to a supplementary            // private method            ListIterator fwd = list.listIterator();            ListIterator rev = list.listIterator(size);            for (int i=0, mid=list.size()>>1; i<mid; i++) {                Object tmp = fwd.next();                fwd.set(rev.previous());                rev.set(tmp);            }        }    }


 @SuppressWarnings({"rawtypes", "unchecked"})    public static void swap(List<?> list, int i, int j) {        // instead of using a raw type here, it's possible to capture        // the wildcard but it will require a call to a supplementary        // private method        final List l = list;        l.set(i, l.set(j, l.get(i)));    }




阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 英语不会做题怎么办 孩子审题不细心怎么办 生孩子有恐惧症怎么办 小孩不喜欢上幼儿园怎么办 小孩不喜欢去幼儿园怎么办 小孩不喜欢学生字怎么办 学生不喜欢补课老师怎么办 小孩不喜欢上学逃课怎么办 一年级小朋友不爱写字怎么办 幼儿园小朋友不爱写字怎么办 孩子懒散不积极怎么办 孩子不肯上幼儿园怎么办 孩子不肯去幼儿园怎么办 小孩记不住字怎么办 小孩不会写字要怎么办 一年级孩子不爱写字怎么办 一年级小孩不爱写字怎么办 孩子不爱写字怎么办呢 幼儿园孩子不爱写字怎么办 孩子上学没学籍怎么办 孩子上学务工证怎么办 孩子上学被欺负怎么办 孩子害怕上幼儿园怎么办 孩子写字肩膀疼怎么办 5岁不会写字怎么办 上中班不爱写字怎么办 孩子性子太慢怎么办 13小孩特别懒怎么办 小孩不肯上幼儿园怎么办 宝宝不肯上幼儿园怎么办 宝宝不肯去幼儿园怎么办 小孩子不肯去幼儿园怎么办 上幼儿园不说话怎么办 小孩写字不认真怎么办 游戏打开是乱码怎么办 小孩不写字该怎么办 小孩不喜欢穿袜子怎么办 宝宝不喜欢穿袜子怎么办 看到婆婆就烦怎么办 什么也不想吃怎么办 宝宝不喜欢带围兜怎么办