黑马程序员------集合(No.2)(Collections、Arrays、集合与数组转换、高级for、可变参数、静态导入)
2013-09-17 20:32
896 查看
----------------------
ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
Collections
Collections类是由很多静态方法组成的工具类。
Arrays
Arrays:用于操作数组的工具类,里面都是静态方法。
asList:将数组变成List集合。
把数组变成List有什么好处?
可以使用集合的思想和方法来操作数组中的元素
注意:
1.将数组转变成集合,不可以使用集合的增删方法。因为数组的长度是固定的。
如果你增删,那么会发生UnsupportedOperationException异常。
2.如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素。
如果数组中的元素都是个基本数据类型,那么会将该数组作为集合中的元素存在。
集合转数组
Collection接口中的toArray方法。
1.指定类型的数组到底要定义多长呢?
当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组,长度为集合的size。
当指定类型的数组长度大于了集合的size,就不会新创建数组,而是使用传递过来的数组。
所以要创建一个刚刚好的数组。
2.为什么要将集合变成数组?
为了限定对元素的操作。
高级for循环
格式:for{数据类型 变量名:被遍历的集合(Collection)或者数组}{
}
对集合进行遍历,只能获取集合元素,但是不能对集合进行操作。
迭代器除了遍历,还可以进行remove集合中元素的动作。如果是用ListIterator,还可以在遍历过程中对集合进行增删改查的操作。
高级for和传统for有什么区别呢?
高级for有一个局限性,必须有被遍历的目标。建议在遍历数组的时候还是用传统for。因为传统for可以定义脚标。
可变参数:JDK 1.5版本后出现的新特性。
在使用时注意:可变参数一定要定义在参数列表的最后面!
其实就是一种数组参数的简写方式。不用每一次都手动的建立数组对象。只要将要操作的元素作为参数传递即可。隐式将这些参数封装成了数组。
静态导入
当类名重名时,需要指定具体的包名。
当方法名重名时,指定具备所属的对象或者类。
import static java.util.Arrays.*;//导入的是Arrays这个类中的所有的静态成员
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详情请查看:http://edu.csdn.net
ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
Collections
Collections类是由很多静态方法组成的工具类。
import java.util.*; class CollectionsDemo{ public static void main(String[] args) { sortDemo(); } public static void sortDemo(){ ArrayList<String> a = new ArrayList<String>(); a.add("abcd"); a.add("aaaa"); a.add("z"); a.add("kkkkkkkkk"); a.add("qq"); a.add("zz"); sop(a); //原始的自然排序 //Collections.sort(a); //希望按照长度排序 Collections.sort(a,new MyComp()); sop(a); } public static void sop(Object obj){ System.out.println(obj); } } class MyComp implements Comparator<String>{ public int compare(String s1,String s2){ if(s1.length()<s2.length()) return 1; if(s1.length()>s2.length()) return -1; return s1.compareTo(s2); } }
Arrays
Arrays:用于操作数组的工具类,里面都是静态方法。
asList:将数组变成List集合。
把数组变成List有什么好处?
可以使用集合的思想和方法来操作数组中的元素
注意:
1.将数组转变成集合,不可以使用集合的增删方法。因为数组的长度是固定的。
如果你增删,那么会发生UnsupportedOperationException异常。
2.如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素。
如果数组中的元素都是个基本数据类型,那么会将该数组作为集合中的元素存在。
import java.util.*; class ArraysDemo{ public static void main(String[] args){ String[] arr = {"adbc","cc","kkkk"}; //把数组变成List有什么好处? //可以使用集合的思想和方法来操作数组中的元素 List<String> list = Arrays.asList(arr); sop("contains:"+list.contains("cc")); /* 注意:将数组转变成集合,不可以使用集合的增删方法。因为数组的长度是固定的。 如果你增删,那么会发生UnsupportedOperationException异常。 */ //list.add("bb");//UnsupportedOperationException sop(list); //int[] nums = {2,3,4}; //List li = Arrays.asList(nums); 输出[[I@3a8721bd] //即List<int[]> li = Arrays.asList(nums); Integer[] nums = {2,3,4}; List li = Arrays.asList(nums); /* 如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素。 如果数组中的元素都是个基本数据类型,那么会将该数组作为集合中的元素存在。 */ sop(li); } public static void sop(Object obj){ System.out.println(obj); } }
集合转数组
Collection接口中的toArray方法。
1.指定类型的数组到底要定义多长呢?
当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组,长度为集合的size。
当指定类型的数组长度大于了集合的size,就不会新创建数组,而是使用传递过来的数组。
所以要创建一个刚刚好的数组。
2.为什么要将集合变成数组?
为了限定对元素的操作。
import java.util.*; class ArraysDemo2{ public static void main(String[] args){ ArrayList<String> a = new ArrayList<String>(); a.add("abc1"); a.add("abc2"); a.add("abc3"); a.add("abc4"); /* 1.指定类型的数组到底要定义多长呢? 当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组,长度为集合的size。 当指定类型的数组长度大于了集合的size,就不会新创建数组,而是使用传递过来的数组。 所以要创建一个刚刚好的数组。 2.为什么要将集合变成数组? 为了限定对元素的操作。 */ String[] arr = a.toArray(new String[a.size()]); System.out.println(Arrays.toString(arr)); } }
高级for循环
格式:for{数据类型 变量名:被遍历的集合(Collection)或者数组}{
}
对集合进行遍历,只能获取集合元素,但是不能对集合进行操作。
迭代器除了遍历,还可以进行remove集合中元素的动作。如果是用ListIterator,还可以在遍历过程中对集合进行增删改查的操作。
高级for和传统for有什么区别呢?
高级for有一个局限性,必须有被遍历的目标。建议在遍历数组的时候还是用传统for。因为传统for可以定义脚标。
import java.util.*; class ArraysDemo3{ public static void main(String[] args){ HashMap<Integer,String> hm = new HashMap<Integer,String>(); hm.put(1,"a"); hm.put(2,"b"); hm.put(3,"c"); Set<Integer> keySet = hm.keySet(); for(Integer i : keySet){ System.out.println(hm.get(i)); } Set<Map.Entry<Integer,String>> entrySet = hm.entrySet(); for(Map.Entry<Integer,String> i :entrySet){ System.out.println(i.getKey()+"..."+i.getValue()); } } }
可变参数:JDK 1.5版本后出现的新特性。
在使用时注意:可变参数一定要定义在参数列表的最后面!
其实就是一种数组参数的简写方式。不用每一次都手动的建立数组对象。只要将要操作的元素作为参数传递即可。隐式将这些参数封装成了数组。
import java.util.*; class ArraysDemo3{ public static void main(String[] args){ show(1,2); show(2,4,5,4,6); } public static void show(int... arr){ System.out.println(arr.length); } }
静态导入
当类名重名时,需要指定具体的包名。
当方法名重名时,指定具备所属的对象或者类。
import static java.util.Arrays.*;//导入的是Arrays这个类中的所有的静态成员
import java.util.*; import static java.util.Arrays.*;//导入的是Arrays这个类中的所有的静态成员 class ArraysDemo3 extends { public static void main(String[] args){ int[] arr = {3,1,5}; /* Arrays.sort(arr); int index = Arrays.binarySearch(arr,5); System.out.println(Arrays.toString(arr)); System.out.println("Index="+index); */ sort(arr); int index = binarySearch(arr,5); System.out.println(Arrays.toString(arr)); //该类继承Object。toString默认是Object中的方法。所以这仍要指定。 System.out.println("Index="+index); } }
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详情请查看:http://edu.csdn.net
相关文章推荐
- 黑马程序员_温习 集合六 (个人笔记)摘要(Collections集合工具类-----Arrays数组工具类-----高级for----可变参数----静态导入)
- 黑马程序员---集合框架工具类Collections,数组工具类Arrays常见方法以及1.5版本新特性(高级for,可变参数和静态导入)
- 黑马程序员_集合3(HashMap,HashTable,TreeMap,Arrays,Collections,高级for,可变参数,静态导入,Date,Calendar,Math,System等)
- 【17】集合4_Collections,Arrays工具类,高级For,可变参数,静态成员导入
- 黑马程序员--------java Collections、Arrays、高级for、可变参数、静态导入、System、Runtime、Math、Date、Calendar
- 黑马程序员_集合4(高级for,可变参数,静态导入,Date,Calendar,Math,System,RunTime)
- 黑马程序员——Collections、Arrays、增强for、可变参数、静态导入
- 黑马程序员_集合(高级for,可变参数,静态导入,Date,Calendar,Math,System,RunTime)
- Java学习日记(九)Collection、泛型、Map集合、Collections&Arrays、增强for语句、可变参数、静态导入
- 黑马程序员——19,Collections工具类,Arrays工具类,高级for循环,可变参数,静态导入
- 黑马程序员_Java第17天知识总结_集合框架的工具类_Collections_Arrays_将数组变成list集合_集合变数组_高级for循环_可变参数
- 黑马程序员——36,Collections工具类,Arrays工具类,高级for循环,可变参数,静态导入
- 黑马程序员_day17 (Collections-sort-max-替换翻转,集合转成数组,增强for循环,可变参数,静态导入)。
- 【黑马程序员】java1.5新特性-----可变参数,静态导入,高级for循环及享元设计模式
- 黑马程序员——java编程那些事儿____jdk1.5新特性 静态导入、可变参数、高级for循环
- 黑马程序员_高新技术1(高级for,静态导入,可变参数,自动装箱拆箱,枚举)
- day17集合框架的工具类Collections。二分法查找原理 。操作数组的工具类Arrays,集合变数组。高级for循环。可变参数
- 黑马程序员--学习笔记(集合框架中的两个工具类,高级for循环,可变参数,静态导入)
- Java基础之集合框架(四)--Collections、Arrays、增强for循环、可变参数、静态导入
- 工具类 Collections Arrays asList 数组变集合 集合变数组 高级for循环 可变参数 。。。 静态导入