Collections
常用方法
根据自然排序接口以及比较器接口给集合进行排序
sort(List<T> list, Comparator<? super T> c) ;
二分搜索法搜索指定元素的位置(如果搜索键包含在列表中,则返回搜索键的索引;否则返回 (-(插入点) - 1))
binarySearch(List<? extends Comparable<? super T>> list, T key) ;
binarySearch(List<? extends T> list, T key, Comparator<? super T> c) ;
替换集合中的所有元素
fill(List<? super T> list, T obj) ;
替换集合中的某一个元素;
replaceAll(List<T> list, T oldVal, T newVal) ;
反转元素顺序
强行逆转了排序(Comparable、Comparator)规则
reverseOrder() ;
reverseOrder(Comparator<T> cmp) ;
指定置换与随机置换(扑克牌)

Arrays
数组转成集合有什么好处?

数组转成集合后会有什么限制?

数组转成集合,内部元素对象注意点

1、集合转成数组注意点,转成后数组长度问题
2、为什么要将集合转成数组

相关代码
package com.javaxl;
import java.util.*;
/**
* @author 小李飞刀
* @site www.javaxl.com
* @company
* @create 2019-05-15 10:28
*/
public class CollectionsDemo {
public static void main(String[] args) {
// method_1(args);
// method_reverseOrder(args);
// method_3(args);
method_4(args);
}
/**
* 数组转集合 为了更方便的操作集合中的元素
* 需要注意对象的类型是引用型还是基本数据类型,转集合的结果会不一样
* @param args
*/
public static void method_3(String[] args) {
String[] arr1 = {"1","3"};
Integer[] arr2 = {1,3};
int[] arr3 = {1,3};
List<String> list1 = Arrays.asList(arr1);
List<Integer> list2 = Arrays.asList(arr2);
List<int[]> list3 = Arrays.asList(arr3);//注意这里的集合泛型
}
/**
* 集合转数组
* 若是集合中的元素只想提供查看功能,不提供增删改功能
* @param args
*/
public static void method_4(String[] args) {
ArrayList<String> al = new ArrayList<String>();
al.add("java01");
al.add("java02");
al.add("java03");
// Object[] objs = al.toArray();//[java01, java02, java03]
// String[] objs = al.toArray(new String[0]); // [java01, java02, java03]
String[] objs = al.toArray(new String[6]);
System.out.println(Arrays.toString(objs));
}
/**
* sort、binarySearch、fill、replaceAll。reverse
* @param args
*/
public static void method_1(String[] args) {
List<String> list = new ArrayList<>();
list.add("aaaaaddaa");
list.add("ccccccdb");
list.add("cbcc");
list.add("cccc");
list.add("a1234");
System.out.println(list);//[aaaaaddaa, ccccccdb, cbcc, cccc, a1234]
// 自然排序
Collections.sort(list);
System.out.println(list);//[a1234, aaaaaddaa, cbcc, cccc, ccccccdb]
Collections.sort(list,new CollectionsDemo_String_Comp());
System.out.println(list);//[cbcc, cccc, a1234, ccccccdb, aaaaaddaa]
// System.out.println(Collections.binarySearch(list, "ccccccdb"));//3 jdk1.8有所改变
// Collections.fill(list,"vvv");//[vvv, vvv, vvv, vvv, vvv]
Collections.replaceAll(list,"cccc","www");
System.out.println(list);//[cbcc, www, a1234, ccccccdb, aaaaaddaa]
Collections.reverse(list);
System.out.println(list);//[aaaaaddaa, ccccccdb, a1234, www, cbcc]
Collections.swap(list,1,2);
System.out.println(list);//[aaaaaddaa, a1234, ccccccdb, www, cbcc]
Collections.shuffle(list);
System.out.println(list);//随机变更两个元素
}
public static void method_reverseOrder(String[] args) {
// TreeSet<String> list = new TreeSet<>();//[a1234, aaaaaddaa, cbcc, cccc, ccccccdb]
TreeSet<String> list = new TreeSet<>(Collections.reverseOrder());//[ccccccdb, cccc, cbcc, aaaaaddaa, a1234]
// TreeSet<String> list = new TreeSet<>(new CollectionsDemo_String_Comp());//[cbcc, cccc, a1234, ccccccdb, aaaaaddaa]
// TreeSet list = new TreeSet<>(Collections.reverseOrder(new CollectionsDemo_String_Comp()));//[aaaaaddaa, ccccccdb, a1234, cccc, cbcc]
list.add("aaaaaddaa");
list.add("ccccccdb");
list.add("cbcc");
list.add("cccc");
list.add("a1234");
System.out.println(list);//[ccccccdb, cccc, cbcc, aaaaaddaa, a1234]
}
}
/**
* 从短到长,同等长度字符串自然排序
*/
class CollectionsDemo_String_Comp implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
int num = o1.length() - o2.length();
if(num == 0)
return o1.compareTo(o2);
return num;
}
}
备案号:湘ICP备19000029号
Copyright © 2018-2019 javaxl晓码阁 版权所有