集合框架__【Collections工具类】【Arrays工具类】
来源:互联网 发布:淘宝虚拟试衣怎么用 编辑:程序博客网 时间:2024/05/16 08:53
集合框架的工具类。Collections 和 Arrays
Collections工具类
:集合框架的工具类。里面定义的都是静态方法。
Collections和Collection有什么区别?
Collection是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法。
它有两个常用的子接口,
List:对元素都有定义索引。有序的。可以重复元素。
Set:不可以重复元素。无序。
Collections是集合框架中的一个工具类。该类中的方法都是静态的
提供的方法中有可以对list集合进行排序,二分查找等方法。
通常常用的集合都是线程不安全的。因为要提高效率。
如果多线程操作这些集合时,可以通过该工具类中的同步方法,将线程不安全的集合,转换成安全的。
集合的排序和二分查找:
sort()、binarySearch()
public static void binarySearchDemo(){List<String> list = new ArrayList<String>();list.add("as");list.add("sfgg");list.add("ass");list.add("hhsaaa");list.add("zb");list.add("v");Collections.sort(list);//二分查找必须是有序的sop(list);//int index = Collections.binarySearch(list,"zb");int index = halfSearch(list, "zbb");//调用效果是一样的sop("index: "+index);}二分查找的算法实现:
public static int halfSearch(List<String> list, String key){int max,min,mid;//binarySearch()的逻辑实现max = list.size()-1;min = 0;while (min<=max){mid = (max+min)>>1;String str = list.get(mid);int num = str.compareTo(key);if (num>0)max = mid-1;else if(num<0)min = mid+1;elsereturn mid;}return -min-1;//如果key不存在,返回插入点}
集合的替换、反转、混洗等操作
import java.util.*;class CollectionDemo2 {public static void main(String[] args) {List<String> list = new ArrayList<String>();list.add("as");list.add("as");list.add("sfgg");list.add("ass");list.add("hhsaaa");sop(list);//打印原集合//Collections.fill(list,"pp");//将list集合所有元素替换成指定元素Collections.replaceAll(list,"as","bbb");//将list中该指定元素换成另外的指定元素,可替换多个相同元素//list.set(2,"haha");//将指定角标上的元素替换,只能替换一个元素sop(list);Collections.reverse(list);//反转调用了swap()方法Collections.swap(list,1,2);//调换1,2角标元素的位置sop(list);Collections.shuffle(list);//混洗,随机性sop("shuffle: "+list);}public static void sop(Object obj){System.out.println(obj);}}
Arrays工具类:
用于操作数组的工具类,都是静态方法。
一、将数组转成集合
使用Arrays类中的 Arrays.asList()方法
①将数组转成集合把数组变成list集合的好处:可以使用集合的思想和方法操作数组中的元素
②将数组变成集合,不可以使用集合的增删方法,因为数组长度固定;可以contains()、get()、indexOf()、subList()等不会改变数组长度的操作
如果增删会发生UnsupportedOperationException / 不支持操作异常
③如果数组中的元素都是对象,那么变成集合时,数组元素就直接转成集合元素
如果数组中元素都是基本数据类型,就将该数组作为集合中的一个元素,所以要对基本数据装箱
示例:
import java.util.*;class ArraysDemo {public static void main(String[] args) {int[] a = {6,8,7};sop(Arrays.toString(a));//直接打印数组String[] str = {"da","gdd","ass","xxx",};sop(Arrays.toString(str));//打印arrayList<String> list = Arrays.asList(str);//将数组转成list集合sop(list);//直接打印listsop("contains:"+list.contains("da"));//可以直接判断//int[] arr = {1,2,3};//数组中基本数据类型元素无法转成集合中的对象,打印出数组对象的哈希值,[[I@4f57011e]Integer[] arr = {9,0,1};//进行自动装箱,成为对象List<Integer> li = Arrays.asList(arr);sop(li);//}//数组的查询判断操作,在集合中可以直接用contains实现/*public static boolean myContains(String[] arr,String key){for (int x=0; x<str.length;x++ ){if (arr[x].equals(key))return true;}return false;//不存在则返回false}*/public static void sop(Object obj){System.out.println(obj);}}
二、将集合转成数组
使用Collection接口中的toArray方法
为什么要将集合转成数组? 原因:为了限定对元素的操作,禁止增删
如果指定数组的length小于集合的size,那么方法方法内部都会创建一个数组,长度为集合的size
如果指定数组的length大于集合的size,就不会创建新数组,而是使用传进来的数组。没有对应元素角标的值为null
所以创建size长度的数组最优
示例:
import java.util.*;class CollectionToArray{public static void main(String[] args) {ArrayList<String> al = new ArrayList<String>();al.add("aaa01");al.add("aaa03");al.add("aaa02");String[] arr = al.toArray(new String[0]);//lengthsop(Arrays.toString(arr));}public static void sop(Object obj){System.out.println(obj);}}
- 集合框架__【Collections工具类】【Arrays工具类】
- 集合框架工具类 Collections ,Arrays
- 集合工具类 Collections 、Arrays
- 黑马程序员_JAVA集合框架的工具类:Collections、Arrays
- 黑马程序员--泛型、集合框架工具类:collections和Arrays
- 泛型、集合框架工具类:collections和Arrays
- java集合工具类---Collections/Arrays
- 10.集合框架(三)【Map】【集合技巧】【工具类Collections】【工具类Arrays】
- Collections工具类(集合框架)
- 集合框架工具类COllections
- 集合框架-工具类-Collections
- Collections集合框架工具类
- Collections集合框架工具类
- 工具类:Collections 、Arrays
- 黑马程序员-----collections集合框架工具类和Arrays数组工具类
- 【Java源码分析】集合框架-Collections工具类-Arrays工具类
- 集合框架2——Map系 & 集合工具类(Collections、Arrays)
- Java集合框架-4.【集合工具类:Collections、Arrays】【JDK1.5新特性】
- vim tab 空格设置及转换
- 关于字符编码,你所需要知道的(ASCII,Unicode,Utf-8,GB2312…)
- android入门:zxing学习笔记(二)
- (网络层: 二 ) 网络层提供的服务(基于无连接的服务)
- netstat 命令
- 集合框架__【Collections工具类】【Arrays工具类】
- LeetCode Combination Sum
- 一次http完整的请求tcp报文分析
- Understanding Yadif
- 2013年小米校园招聘笔试题
- zookeeper 安装 配置
- windows下的内存型下载者病毒
- wikioi-天梯-普及一等-划分dp-1040:统计单词个数
- 搜狐2012.9.15校园招聘会笔试题