鸟哥Java学习之集合框架工具类--常用对象API

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,建议设置与集合大小一致
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值