下边是一些常见的集合的静态方法
可以通过静态导入(import static java.util.Collections.*; import static java.util.Arrays.*)的方式使用,也可以直接用类名调用
package collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.TreeSet;
/**
* 1.方法的参数是object,以便于接收任意类型的对象
* 2.集合中存储的都是对象的引用(地址)
* @author asus
* Collection
* |--List:元素是有序的,元素可以重复,因为该集合体系有索引
* |--ArrayList 数组式结构,查询更改速度快(根据角标查询),但是添加和删除速度慢(数据越多越明显),线程不同步
* |--LinkedList 链表式结构,查询速度慢,但是添加删除元素速度快
* |--Vector 数组式结构(最早出现的容器),功能同ArrayList,线程同步(但是多线程时,仍然会使用加锁的ArrayList代替),与ArrayList不同的是当添加新数据需要扩大空间时,会翻倍扩大空间,而不是根据需要
* |--Set: 元素无序(存入和取出的顺序不一定一致),元素不可重复,没有索引
* |--HashSet 使用哈希表作为存储方式,通过先判断哈希值(HashCode),然后再判断元素值,保证元素的唯一性,线程不同步
* 如果存入自定义对象,需要重写equals(obj)方法和hashCode()方法
* |--TreeSet 二叉树结构,默认进行先序遍历排序,通过compareTo()方法return 0;,来判断元素是否唯一
* 如果存入自定义对象,需要重写compareTo(obj)方法
*/
public class CollectionDemo {
public static void main(String[] args) {
testArrayList();
}
//创建一个集合容器,使用Collection接口的子类,ArrayList
public static void testArrayList(){
//Collections,共有方法
ArrayList<String> al3 = new ArrayList<String>();
al3.add("zz");
al3.add("dda");
al3.add("ww");
al3.add("z");
al3.add("sdaf");
//collection-sort,排序
System.out.println("collection-sort:原顺序"+al3);
Collections.sort(al3);
System.out.println("collection-sort:排序后"+al3);
//collection-max,获取最大值
String max = Collections.max(al3);
System.out.println("al3集合中的最大值是:"+max);
//collection-binarySearch,折半查找
int index = Collections.binarySearch(al3,"z");
System.out.println("al3集合中查找“z”的位置是:"+index);
//collection-fill,替换(默认会替换集合中所有元素)
//使用subList(start,end)替换指定部分的元素
System.out.println("al3替换前是:"+al3);
List<String> subAl3 = al3.subList(1, 3);
Collections.fill(subAl3, "pp");
System.out.println("al3替换后是:"+al3);
//collection-replaceAll,替换指定元素
Collections.replaceAll(al3, "pp", "bb");
System.out.println("al3再次替换后是:"+al3);
//collection-reverse,反转
Collections.reverse(al3);
System.out.println("al3反转后是:"+al3);
//collections.reverseOrder([可添加比较器]),提供反转的比较器
TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder());
ts.addAll(al3);
System.out.println("ts倒序输出:"+ts);
//collections.shuffle,随机排序
Collections.shuffle(al3);
System.out.println("第1次随机排列al3集合中的内容:"+al3);
Collections.shuffle(al3);
System.out.println("第2次随机排列al3集合中的内容:"+al3);
//Arrays.asList(数组),将数组转换成集合
String[] arr = {"abc","abd","bce"};
List<String> list = Arrays.asList(arr);
System.out.println("数组转换成集合后是:list = "+list.toString());
}
}
这是对之前的集合学习的补充