黑马程序员_温习 集合六 (个人笔记)摘要(Collections集合工具类-----Arrays数组工具类-----高级for----可变参数----静态导入)

时间:2023-02-24 23:07:27

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------


摘要(Collections集合工具类-----Arrays数组工具类-----高级for----可变参数----静态导入)



Collection类:全静态,集合工具类

常用方法:
|--给List集合自然排序:Collections.sort(List集合)
|--给LIST集合指定比较器排序:Collections.sort(List集合,比较器)


|--返回自然排序后最大值:Collections.max(List结合)
|--返回指定比较器排序后的最大值:Collections.max(List集合,比较器)


|--对List集合二分查找(先排序):Collections.binarySearch(List集合,String)
|--对List集合二分查找(指定比较器排序):Collections.binarySearch(List集合,String,比较器)


|--将List集合所有元素替换成指定元素:Collections.fill(List集合,String)

|--将指定值替换List集合指定值:Collections.repleaceAll(List集合,"aa","pp")//将"aa"替换List集合中的"pp"


|--反转Listihe顺序:Collections.reverse(List集合)


|--将默认定比较器反转顺序:TreeSet<String> s = new TreeSet<String>(Collections.reverseOrder());
|--将指定比较器反转顺序:TreeSet<String> s = new TreeSet<String>(Collections.reverseOrder(比较器));


|--将List集合同步:synchronizedList//还有Set集合同步等看API


|--将Lis集合中两脚表位元素换位置:Collections.swap(List集合,1,3)


|--随机置换List集合元素:Collections.shuffle(List集合)






Arrays类:全静态,数组工具类


常用方法:
|--深度比较(不光比较数组,还比较数组中元素):boolean Arrays.deepEquals(Object[] a1, Object[] a2) 


|--替换(所有或部分):void Arrays.fill(多种数组)


|--将指定数组转为字符串:String Arrays.toString(多种数组)


|--将数组转为List集合: List<t> Array.asList(多种数组)
|--好处:可使用集合的思想和方法操作数组
|--缺点:不可使用集合中的增删方法,因为数组长度是固定的


|--注意:若数组中元素是对象,则变为集合后,数组中的元素变为集合中的元素如String[] s = {"sd","321","sdfs"};
若数组元素位基本数据类型,则会把数组变为集合中的一个元素如int[] x = {1,2,3,8,9};


|--集合变数组:Collection下有:<T>[] toArray(T[] a) //明确泛型,不用强转,常用
如: String[] arr = al.Array(new String[al.size()])
|--集合变数组:限制对元素的操作(不能增删)
|--注意:new String[]<--数组长度若小于al.size则生成新的,长度为size的新数组
<--若大于则使用之,且空位用null占位
<--大于,小于都占用额外空间,故用[al.zise()]即,刚刚好的长度


foreach:高级for循环
|--如: String[] al = {"sd","321","sdfs"}
for(String s : al){}//遍历al中的元素,用S记录


|--和传统for循环相比:高级for有局限性(必须有被遍历的目标)
若对某元素输出100遍,高级for做不到


可变参数:(JDK1.5新特性)其实就是从前数组参数的一种简写方式,不用每次都手动建立数组对象
只要直接传递元素即可,他自动将元素封装为数组


如:
原来:
int[] x ={1,2,3,5,4}
shou(x);
void shou(int[] in)


现在:
shou(1,8,2,4,5,5)
void shou(int...arr)//注意是三个点"..."且,可变参数要在参数列表最后边




静态导入: import static 静态导入,导入的都是静态成员
|--当类名重名时,需要指定具体包名
|--当方法重名时,需要指定具体类名


例:
int[] arr = {1,2,5,8};


Arrays.toString(arr);//<--toSting前必须加类名,因为Object类中也有次方法,而class都是Object子类,即默认toSting方法都是Object的,
//若不加会报错(重名方法异常)


sort(arr);//<--Arrays中独有方法,没有重名,所以可以简写


---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------