一:Collections的用法

1)在java.util.Collections;包中定义了他这几种用法;

1.1).sort( java.util.Comparator;包提供 下面截图)

1.2)实现用法

注意事项:

1.3)Collections 接口的用法Compartor(之前写过一个 排序的小例题  我把链接放着 看的去看   https://blog.csdn.net/liuwenqing11/article/details/112799114)

package Demo1;/*** @author Administrator*/
public class Student {String name;int age;public Student(String name, int age) {this.name = name;this.age = age;}public Student() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}
}package Demo1;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;/*** @author Administrator*/
public class StudentTest {public static ArrayList<Student> students(int number){ArrayList<Student> students = new ArrayList<>();for (int i = 0; i <number ; i++) {int age = (int)(Math.random()*10+20);Student student = new Student("王"+i,age);students.add(student);}System.out.println(students);Collections.sort(students, new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {return o2.age-o1.age;}});return students;}public static void main(String[] args) {System.out.println(students(3));}
}

2.)二分查找,返回所在的下标。没有找到返回负的下标值。( java.util.Comparator;包提供 下面截图)

举例实现。。。

3)反转( java.util.Comparator;包提供 下面截图)

 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);} 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 methodListIterator 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);}}}

3.1)实现截图

4)shuffle 翻译是洗牌 可以理解为 打乱重组 ( java.util.Comparator;包提供 下面截图)

 public static void shuffle(List<?> list, Random rnd) {int size = list.size();if (size < SHUFFLE_THRESHOLD || list instanceof RandomAccess) {for (int i=size; i>1; i--)swap(list, i-1, rnd.nextInt(i));} else {Object arr[] = list.toArray();// Shuffle arrayfor (int i=size; i>1; i--)swap(arr, i-1, rnd.nextInt(i));// Dump array back into list// instead of using a raw type here, it's possible to capture// the wildcard but it will require a call to a supplementary// private methodListIterator it = list.listIterator();for (Object e : arr) {it.next();it.set(e);}}}

实现代码

5)swap 替换   指定一个目标集合以及两个元素的索引,交换这两个指定位置元素的值。

 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 methodfinal List l = list;l.set(i, l.set(j, l.get(i)));}/*** Swaps the two specified elements in the specified array.*/private static void swap(Object[] arr, int i, int j) {Object tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;}

实现代码

6)fill 覆盖(替代、填充) 指定元素 替代指定列表中所有元素

public static <T> void fill(List<? super T> list, T obj) {int size = list.size();if (size < FILL_THRESHOLD || list instanceof RandomAccess) {for (int i=0; i<size; i++)list.set(i, obj);} else {ListIterator<? super T> itr = list.listIterator();for (int i=0; i<size; i++) {itr.next();itr.set(obj);}}}

代码实现

7)copy复制  源码方法

 public static <T> void copy(List<? super T> dest, List<? extends T> src) {int srcSize = src.size();if (srcSize > dest.size())throw new IndexOutOfBoundsException("Source does not fit in dest");if (srcSize < COPY_THRESHOLD ||(src instanceof RandomAccess && dest instanceof RandomAccess)) {for (int i=0; i<srcSize; i++)dest.set(i, src.get(i));} else {ListIterator<? super T> di=dest.listIterator();ListIterator<? extends T> si=src.listIterator();for (int i=0; i<srcSize; i++) {di.next();di.set(si.next());}}}

实现

8)min max 列表中 最大最小值

 public static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp) {if (comp==null)return (T)min((Collection) coll);Iterator<? extends T> i = coll.iterator();T candidate = i.next();while (i.hasNext()) {T next = i.next();if (comp.compare(next, candidate) < 0)candidate = next;}return candidate;}public static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp) {if (comp==null)return (T)max((Collection) coll);Iterator<? extends T> i = coll.iterator();T candidate = i.next();while (i.hasNext()) {T next = i.next();if (comp.compare(next, candidate) > 0)candidate = next;}return candidate;}

实现代码

9)rotate 指定开始元素 连续旋转一圈结束

 private static <T> void rotate1(List<T> list, int distance) {int size = list.size();if (size == 0)return;distance = distance % size;if (distance < 0)distance += size;if (distance == 0)return;for (int cycleStart = 0, nMoved = 0; nMoved != size; cycleStart++) {T displaced = list.get(cycleStart);int i = cycleStart;do {i += distance;if (i >= size)i -= size;displaced = list.set(i, displaced);nMoved ++;} while (i != cycleStart);}}private static void rotate2(List<?> list, int distance) {int size = list.size();if (size == 0)return;int mid =  -distance % size;if (mid < 0)mid += size;if (mid == 0)return;reverse(list.subList(0, mid));reverse(list.subList(mid, size));reverse(list);}

实现截图

10)replaceAll 替换 指定元素替换指定元素 (全部)

 public static <T> boolean replaceAll(List<T> list, T oldVal, T newVal) {boolean result = false;int size = list.size();if (size < REPLACEALL_THRESHOLD || list instanceof RandomAccess) {if (oldVal==null) {for (int i=0; i<size; i++) {if (list.get(i)==null) {list.set(i, newVal);result = true;}}} else {for (int i=0; i<size; i++) {if (oldVal.equals(list.get(i))) {list.set(i, newVal);result = true;}}}} else {ListIterator<T> itr=list.listIterator();if (oldVal==null) {for (int i=0; i<size; i++) {if (itr.next()==null) {itr.set(newVal);result = true;}}} else {for (int i=0; i<size; i++) {if (oldVal.equals(itr.next())) {itr.set(newVal);result = true;}}}}return result;}

实现代码

11)indexOfSubList 和  lastIndexOfSubList 元素第一次出现的位置和元素最后一次出现的位置

 public static int indexOfSubList(List<?> source, List<?> target) {int sourceSize = source.size();int targetSize = target.size();int maxCandidate = sourceSize - targetSize;if (sourceSize < INDEXOFSUBLIST_THRESHOLD ||(source instanceof RandomAccess&&target instanceof RandomAccess)) {nextCand:for (int candidate = 0; candidate <= maxCandidate; candidate++) {for (int i=0, j=candidate; i<targetSize; i++, j++)if (!eq(target.get(i), source.get(j)))continue nextCand;  // Element mismatch, try next candreturn candidate;  // All elements of candidate matched target}} else {  // Iterator version of above algorithmListIterator<?> si = source.listIterator();nextCand:for (int candidate = 0; candidate <= maxCandidate; candidate++) {ListIterator<?> ti = target.listIterator();for (int i=0; i<targetSize; i++) {if (!eq(ti.next(), si.next())) {// Back up source iterator to next candidatefor (int j=0; j<i; j++)si.previous();continue nextCand;}}return candidate;}}return -1;  // No candidate matched the target}public static int lastIndexOfSubList(List<?> source, List<?> target) {int sourceSize = source.size();int targetSize = target.size();int maxCandidate = sourceSize - targetSize;if (sourceSize < INDEXOFSUBLIST_THRESHOLD ||source instanceof RandomAccess) {   // Index access versionnextCand:for (int candidate = maxCandidate; candidate >= 0; candidate--) {for (int i=0, j=candidate; i<targetSize; i++, j++)if (!eq(target.get(i), source.get(j)))continue nextCand;  // Element mismatch, try next candreturn candidate;  // All elements of candidate matched target}} else {  // Iterator version of above algorithmif (maxCandidate < 0)return -1;ListIterator<?> si = source.listIterator(maxCandidate);nextCand:for (int candidate = maxCandidate; candidate >= 0; candidate--) {ListIterator<?> ti = target.listIterator();for (int i=0; i<targetSize; i++) {if (!eq(ti.next(), si.next())) {if (candidate != 0) {// Back up source iterator to next candidatefor (int j=0; j<=i+1; j++)si.previous();}continue nextCand;}}return candidate;}}return -1;  // No candidate matched the target}

实现代码

在文章最后说一下  如果忘记类的具体用法  在编辑器里面 写入方法名 然后 点击方法名  先按住Ctrl 在鼠标左健点击 例如Math类

Collections用法相关推荐

  1. java collections 用法_Java Collections unmodifiableCollection()用法及代码示例

    java.util.Collections类的unmodifiableCollection()方法用于返回指定集合的​​不可修改视图.此方法允许模块为用户提供对内部集合的只读访问权限.对返回的集合&q ...

  2. Collections.binarySearch用法

    <DiversityScoreMapping> int java.util.Collections.binarySearch(List<? extends Comparable< ...

  3. java sort 第二个参数_详解java Collections.sort的两种用法

    Collections是一个工具类,sort是其中的静态方法,是用来对List类型进行排序的,它有两种参数形式: public static > void sort(List list) { l ...

  4. python的userlist_Python Collections.UserList用法及代码示例

    Python列表是array-like数据结构,但与之不同的是它是同质的.单个列表可能包含数据类型,例如整数,字符串以及对象. Python中的列表是有序的,并且有一定数量.根据确定的序列对列表中的元 ...

  5. python defaultdict 类属性_Python collections.defaultdict模块用法详解

    Python中通过Key访问字典,当Key不存在时,会引发'KeyError'异常.为了避免这种情况的发生,可以使用collections类中的defaultdict()方法来为字典提供默认值. 语法 ...

  6. Counter 用法 from collections import Counter

    from collections import Counter a = [1,4,2,3,2,3,4,2] b = Counter(a) #求数组中每个数字出现了几次 print(b)print( b ...

  7. java 同步 set_Java Collections synchronizedSet()用法及代码示例

    java.util.Collections类的synchronizedSet()方法用于返回由指定集合支持的同步(线程安全)集合.为了保证串行访问,至关重要的是,对后备集的所有访问都必须通过返回的集来 ...

  8. java中Collections.sort() 排序函数的用法

    java中Collections.sort() 排序函数的用法: 用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: /** ...

  9. 集合排序 Collections.sort用法

    大半夜,一同学来问这段代码.问了三个问题. 一,这个排序Sort()怎么用?  二,接口作为方法的参数是什么意思? 三,入参直接new Comparator(){}是怎么回事? 先回答第二,三个问题: ...

最新文章

  1. Fabrice Bellard:一个人抵得上一个百人团队
  2. cassandra java driver
  3. vim无法打中文_vim+ctags+cscope+Taglist+Nerdtree打造成sourceinsight
  4. 求职过程记录(5)——黎明到来
  5. 方舟原始恐惧mod生物代码_重磅!命令与征服和红色警戒源代码在GitHub公布了
  6. oracle json字符串转数组,json字符串转化成json对象(原生方法)
  7. 将Java 8日期时间API与JSF和Java EE 7结合使用
  8. php获取音频的时长,PHP编程获取音频文件时长的方法【基于getid3类】
  9. freeMarker 遍历 list,map,listmap
  10. python战斗2:看到一个页面编码
  11. 基于Xilinx Spartan-7 FPGA实现AD7606-8接口
  12. Dxg——Bat批处理 开发笔记整理分类合集【所有的相关记录,都整理在此】
  13. Apache OpenOffice-java调用时的问题总结
  14. php怎么将农历转换成公历,php 公历农历如何实现转换
  15. 超全!Python 处理日期与时间的全面总结!
  16. dede后台系统基本参数空白怎么办?
  17. 微信小程序 实时搜索并高亮关键字
  18. WeWork举步维艰,它的竞争对手们活的怎么样?
  19. 【2094. 找出 3 位偶数】
  20. 蒟蒻重返c++,学海拾贝

热门文章

  1. P3386 【模板】二分图匹配(匈牙利算法)
  2. 电影QQ群怎么引流?电影的社群营销要怎么做?
  3. 通过百度地图API获取用户所在地理位置信息
  4. 常熟理工学院计算机专业排名2015,2019年常熟理工学院优势专业排名及分数线
  5. QQ登录php无限制,PHP实现QQ登录实例代码
  6. 14款国内外精品PPT模板网站对比介绍
  7. 为改善Siri功能Apple收购语音助理初创公司
  8. 游戏加盟和游戏代理有什么区别?哪个更好?
  9. SNN ANN 多模态融合 神经网络发展过程的两个分支
  10. 读书百客:《题竹林寺》简析