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
- Java基础之集合框架--Collections.reverse()方法
- Java基础--集合框架之Collections
- Java基础之集合框架--Collections.binarySearch()
- Java基础之集合框架--Collections.reverseOrder()
- Java基础之集合框架--Collections的fill()方法和replaceAll()方法
- Java基础之集合框架--Collections工具类之max()方法
- Java基础之集合框架--Collections工具类中的sort()方法
- Java集合框架之Collections类的常用方法
- Java基础-集合框架7 Collections
- 【JAVA基础】集合框架(collections framework)
- Java集合框架之Collections工具类
- java集合框架之Collections类
- 黑马程序员 java基础集合框架之集合工具类Collections
- Java集合框架Collections
- Java基础之集合框架(四)--Collections、Arrays、增强for循环、可变参数、静态导入
- Java基础之集合框架(四)--Collections、Arrays、增强for循环、可变参数、静态导入
- java基础之集合框架——Collections-同步和非同步
- Java基础之集合框架--Collections.synchronizedList() 线程安全的List
- [LeetCode] 412.Fizz Buzz
- JQuery小结
- eclipse配置JDK
- SSH与SSM学习之hibernate09——对象的三种状态
- C#--记录用户程序退出时间日志
- Java基础之集合框架--Collections.reverse()方法
- java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver解决方案
- Android移动开发-属性动画的实现
- activeMQ发布订阅模式中中常用工具类
- Android IPC机制
- C#--生成流水号---当前时间加随机数
- 如何从零开始建立一个新的项目
- Hadoop2 伪分布式安装
- SSH与SSM学习之hibernate10——Hibernate的一级缓存