1 Collections(操作集合的工具类)
排序
sort方法
原理:泛型限定,可以对任何具有
CompareTo方法的进行排序(
接受Comparable及其子类,因为他们才具有CompareTo方法)
还一种比较,带比较器:sort(list,new comparatorBylength())
比较器
comparatorBylength自己写的
package cn.itcast.toolclass.collections;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CollectionsDemo {
public static void main(String[] args) {
/*
* Collections:是集合框架的工具类,里面的方法都是静态的
*/
demo_1();
}
public static void demo_1(){
List<String> list = new ArrayList<String>();
list.add("abc");
list.add("rfhj");
list.add("tjyjhng");
list.add("abctt");
System.out.println(list);
//对list集合进行指定顺序排序
Collections.sort(list);
System.out.println(list);
//带比较器
Collections.sort(list, new ComparaByLength());
System.out.println(list);
}
}
package cn.itcast.toolclass.collections;
import java.util.Comparator;
public class ComparaByLength implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
int temp = o1.length()-o2.length();
return temp==0?o1.compareTo(o2):temp;
}
}
折半查找:
必须是有序的才能用 BinarySort()
最值:能够进行比较 max() min()
逆序:
TreeSet<String>
ts
=
new
TreeSet<String>(Collections.
reverseOrder
());
//TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new ComparaByLength()));
替换:
Collections.
replaceAll
(
list
,
"abc"
,
"cba"
);
fill():将集合中的值全部替换成同一值,可用于初始化
随机:shuffle():将集合中元素随机摆放,例如扑克牌洗牌
重点
将非同步集合转变为同步集合:synchronizedCollection()
synchronizedList(),
synchronizedSet()
等
原理:加锁
建个工具类,把上面的类放进去成为内部类:
同上
2.Arrays(操作数组的工具类)
sort()
equals()
deepequals()
fill()
toString()
package cn.itcast.toolclass.collections;
import java.util.Arrays;
public class ArraysDemo {
public static void main(String[] args) {
/*
* Arrays:是数组的工具类,里面的方法都是静态的
*/
int[] arr={3,5,8,8,0};
System.out.println(Arrays.toString(arr));
}
//toString经典实现
public static String toString(int[] a) {
if (a == null)
return "null";
int iMax = a.length - 1;
if (iMax == -1)
return "[]";
StringBuilder b = new StringBuilder();
b.append('[');
for (int i = 0; ; i++) { //中间省略条件判断,提高效率
b.append(a[i]);
if (i == iMax)
return b.append(']').toString();
b.append(", ");
}
}
}
重点:
asList():将数组转成List集合,可用的方法多很多,用集合中方法操作数组。但是,集合中的增删方法不可,因为改变了数组长度,否则会发生异常。
注意: 如果数组中的元素是对象,转成集合时,直接将数组中的元素作为集合中的元素存储
如果数组中元素是基本数据类型数值,那么会将该数组作为集合中的元素存储,如下,如果是Integer[],输出[3,5,8,8,0]
public static void demo(){
int[] arr={3,5,8,8,0};
List<int[]> list = Arrays.asList(arr);
System.out.println(list);
}
输出结果:
[[I@15db9742]
集合转数组:将操作方法进行限定,不允许增删
toArray()
:返回的数组中元素是Object
toArray(数组):
返回的数组中元素类型与传入一样
该方法需要传入一个指定类型的数组,大小怎么定义?
如果长度小于集合,会创建一个同类型并和集合大小一致的数组,大于的话使用指定的数组,其他位置为null,建议设置与集合大小一致