黑马程序员--集合工具类(要了解)
来源:互联网 发布:大学生网络信贷案例 编辑:程序博客网 时间:2024/06/05 05:57
----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------
集合框架的工具类。
Collections:集合框架的工具类。里面定义的都是静态方法。
Collections和Collection有什么区别?
Collection是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法。
它有两个常用的子接口,
List:对元素都有定义索引。有序的。可以重复元素。
Set:不可以重复元素。无序。
Collections是集合框架中的一个工具类。该类中的方法都是静态的
提供的方法中有可以对list集合进行排序,二分查找等方法。
通常常用的集合都是线程不安全的。因为要提高效率。
如果多线程操作这些集合时,可以通过该工具类中的同步方法,将线程不安全的集合,转换成安全的。
//查找
int binarySearch(List list, T key)
使用二分搜索法搜索指定列表,以获得指定对象。
int binarySearch(List list, T key, Comparator c)
使用二分搜索法搜索指定列表,以获得指定对象。
T max(Collection coll, Comparator comp)
根据指定比较器产生的顺序,返回给定 collection 的最大元素。
T min(Collection coll, Comparator comp)
根据指定比较器产生的顺序,返回给定 collection 的最小元素。
//替换
void fill(List list, T obj)
使用指定元素替换指定列表中的所有元素。
boolean replaceAll(List list, T oldVal, T newVal)
使用另一个值替换列表中出现的所有某一指定值。
//反转
Comparator reverseOrder()
返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序。
Comparator reverseOrder(Comparator cmp)
返回一个比较器,它强行逆转指定比较器的顺序。
//排序
void shuffle(List list)
使用默认随机源对指定列表进行置换。
void sort(List list)
根据元素的自然顺序 对指定列表按升序进行排序。
void sort(List list, Comparator c)
根据指定比较器产生的顺序对指定列表进行排序。
//加锁
List synchronizedList(List list)
返回指定列表支持的同步(线程安全的)列表。
Map synchronizedMap(Map m)
返回由指定映射支持的同步(线程安全的)映射。
Set synchronizedSet(Set s)
返回指定有序映射支持的同步(线程安全的)有序映射。
import java.util.*;import static java.util.Collections.*;class ToolsDemo{public static void main(String[] args){List<String> list = new ArrayList<String>();list.add("java01");list.add("java04");list.add("java02");list.add("java03");sort(list);sop(list);//sop(binarySearch(list,"java02");//sop(binarySearch(list,"java02",new MyComparator()));//二分查找要点:要是有序的。//sop(max(list,new MyComparator()));//sop(min(list,new MyComparator()));//fill(list,"123");//replaceAll(list,"java01","123");//sop(binarySearch(list,"java02",reverseOrder(new MyComparator())));//shuffle(list);//sop(list);sop(synchronizedList(list));}public static void sop(Object obj){System.out.println(obj);}}class MyComparator implements Comparator<String>{public int compare(String s1,String s2){return s1.compareTo(s2);}}
Arrays:用于操作数组的工具类。
里面都是静态方法。
//这个方法比较特殊
List asList([]):将数组变成list集合
把数组变成list集合有什么好处?
可以使用集合的思想和方法来操作数组中的元素。
注意:将数组变成集合,不可以使用集合的增删方法。
因为数组的长度是固定。
如果你增删。那么会反生UnsupportedOperationException,
可以使用
contains。
get
indexOf()
subList();
如果数组中的元素都是对象。那么变成集合时,数组中的元素就直接转成集合中的元素。
如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。
//上面的方法换成其它数据类型也适用。
void sort(int[] a)
对指定的 int 型数组按数字升序进行排序。
void sort(int[] a, int fromIndex, int toIndex)
对指定 int 型数组的指定范围按数字升序进行排序。
int binarySearch(int[] a, int key)
使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。
void fill(int[] a, int val)
将指定的 int 值分配给指定 int 型数组的每个元素。
void fill(int[] a, int fromIndex, int toIndex, int val)
将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。
String toString(int[] a)
返回指定数组内容的字符串表示形式。
import java.util.*;class ToolsDemo2{public static void main(String[] args) {int[] arr = {2,4,5};sop("int[] arr = {2,4,5};");sop("Arrays.toString(arr): "+Arrays.toString(arr)+"\n");String[] arr1 = {"abc","cc","kkkk"};sop("String[] arr1 = {\"abc\",\"cc\",\"kkkk\"};");sop("Arrays.asList(arr1).contains(\"cc\"): "+Arrays.asList(arr1).contains("cc")+"\n");//list.add("qq");//UnsupportedOperationException,int[] nums = {2,4,5};sop("int[] nums = {2,4,5};");sop("Arrays.asList(nums): "+Arrays.asList(nums)+"\n");Integer[] nums2 = {2,4,5};sop("Integer[] nums2 = {2,4,5};");sop("Arrays.asList(nums2): "+Arrays.asList(nums2));}public static void sop(Object obj){System.out.println(obj);}}
集合变数组。
Collection接口中的toArray方法。
1,指定类型的数组到底要定义多长呢?
当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组。长度为集合的size。
当指定类型的数组长度大于了集合的size,就不会新创建了数组。而是使用传递进来的数组。
所以创建一个刚刚好的数组最优。
2,为什么要将集合变数组?
为了限定对元素的操作。不需要进行增删了。
import java.util.*;class ToolsDemo3{public static void main(String[] args) {ArrayList<String> al = new ArrayList<String>();al.add("abc1");al.add("abc2");al.add("abc3");String[] arr = al.toArray(new String[al.size()]);//重点。。System.out.println(Arrays.toString(arr));}}
----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------
- 黑马程序员--集合工具类(要了解)
- 黑马程序员-----集合类工具
- 黑马程序员 集合--工具类
- 黑马程序员--集合工具类
- 黑马程序员——泛型、map集合及Collections工具类了解
- 黑马程序员-----集合框架工具类使用(第二篇)
- 黑马程序员----集合工具类(Arrays和Collections)
- 黑马程序员-----java基础(泛型,集合工具类)
- 黑马程序员----集合3(Map、工具类)
- 【黑马程序员】集合工具类:Collections
- 黑马程序员__集合工具类
- 黑马程序员_集合框架工具类
- 黑马程序员_集合框架工具类
- 黑马程序员——集合工具类
- 黑马程序员-集合类Map、集合工具类
- 黑马程序员--集合工具Collections
- 黑马程序员 Java集合及集合工具类
- 黑马程序员--Map集合、集合框架工具类
- 黑马程序员_java面向对象
- log4j详解
- python字符编码详解
- 5UCMS留言板插件开发指南
- 微信公众帐号开发教程第1篇-引言
- 黑马程序员--集合工具类(要了解)
- C++代码Refine实例
- AlphaControls的汉化
- 【CQOI 2006】移动棋子
- 黑马程序员--API中常用的其它类(日期,系统参数等等)
- php Cookies 操作类
- epoll使用详解
- Android平台的专业术语
- Ubuntu:dpkg更新管理器出错及解决