黑马程序员--第十七天:Collections 类, Arrays 类
2013-05-31 11:41
190 查看
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.List; /*17-10_15 集合框架工具类。 Collections: Collections.sort(list, cmp); String s = Collections.max(list,cmp); int index = Collections.binarySearch(list, "aahjt"); fill(); replaceAll(); reverse(); reverseOrder(comparator); synchronizedList(list); synchronizedMap(); synchronizedSet(); shuffle(list); swap(list,index1,index2); */ public class MyDemo { public static void main(String []args){ sortDemo(); } public static void sortDemo(){ List<String> list = new ArrayList<String>(); Comparator cmp = new StrLenComparator(); list.add("adf"); list.add("asdf"); list.add("addf"); list.add("aahjt"); list.add("a"); System.out.println(list); //Collections.sort(list); Collections.sort(list, cmp); System.out.println(list); // String s = Collections.max(list,cmp); // System.out.println(s); int in = halfSearch(list, "as"); // int index = Collections.binarySearch(list, "aahjt"); // System.out.println(list.contains("adf")); // // System.out.println(index); System.out.println(in); System.out.println(list); } public static int halfSearch(List<String> list, String key){ int min = 0, max = list.size()-1; Comparator cmp = new StrLenComparator(); while(min<=max){ int mid = (min + max) >>1; String s = list.get(mid); int num = s.compareTo(key); int num1 = cmp.compare(list.get(mid), key); if(num<0) min = mid +1; else if(num>0) max = mid -1; else return mid; } return -min-1; } } class StrLenComparator implements Comparator<String>{ @Override public int compare(String o1, String o2) { // TODO Auto-generated method stub return o1.length()-o2.length(); } }
/*17-16 Arrays:用于操作数组的工具类。 里面都是静态方法。 asList:将数组变成List集合。 */ class { public static void main(String[] args) { int[] arr = {1, 2 ,4}; System.out.println(Arrays.toString(arr)); String[] arr = {"abc", "ac", "adkj"}; //把数组变成集合有什么好处? /* 可以使用集合的思想和方法来操作数组元素。 注意:将数组变成集合,不可以使用集合的增删方法。因为数组的长度是固定的。 contains get indexOf subList(); 如果增删了,会发生 UnsupportedOperationException. */ List<String> list = Arrays.asList(arr); sop("contains: " + list.contains("ac"); list.add("adf"); sop(list); int[] nums = {2, 3, 5}; List li = Arrays.asList(nums); //List<int []> li = Arrays.asList(nums); //如果数组中的元素都是对象,那么变成集合时数组中的元素就直接转成集合中的元素。 //如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。 sop(li); Integer[] integers = {1,2,3}; List intList = Arrays.asList(integers); // List<Integer> intList = Arrays.asList(integers); sop(intList); } public static boolean myContains(String[] arr, String key){ for(String s : arr){ if(s.equals(key)) return true; } return false; } public static void sop(Object obj){ System.out.println(obj); } }
import java.util.ArrayList; import java.util.Arrays; import java.util.List; /*17-17_20 高级for循环: 对集合进行遍历。 只能获取集合元素,但是不能对集合进行操作 迭代器除了遍历,还可以进行remove集合中的元素动作。 如果是用ListIterator,还可以在遍历过程中对集合进行增删改查的动作。 高级for循环和传统for循环有什么区别。 高级for有一个局限性。必须有被遍历的目标。 建议在遍历数组的时候,还是用传统的for,因为传统for可以对角标进行操作。 JDK1.5 版本的新特性: 方法的可变参数。 在使用是注意,可变参数一定要定义在参数列表最后面。 可变参数: 其实就是上一种数组参数的简写形式。 不用每一次都手动的建立数组对象。只要将要操作的元素作为参数传递即可。 隐式将这些参数封装成了数组。 */ public class CollectionToArray { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<String> al = new ArrayList<String>(); ArrayList<String> a2 = new ArrayList<String>(); al.add("ad1"); al.add("ad2"); al.add("ad3"); a2.add("ad3"); a2.add("ad3"); a2.add("ad3"); String[] strs = {"ths","is","string"}; String[] strs1 = {"strs1,,,","ths","is","string"}; List list = Arrays.asList("this","ida","dsf");//当传入的是多个参数时,会默认以可变参数来处理,把多个参数封装到一个新的数组中。 list = Arrays.asList(strs,strs1);//当传入的是多个数组是,会吧多个数组同时封装到一个新的数组中。 list = Arrays.asList("this");//当传入的参数只要一个时,若不是数组,会自动把它封装到数组中 list = Arrays.asList(strs);//当传入的是一个数组是,会默认的不以可变参数的形式处理,以和之前版本兼容,所以该数组不会再被封装到一个数组中 System.out.println(list); System.out.println("this is "); /* 1.指定类型的数组到底要定义多长呢? 当指定的类型的数组长度小于了集合的size,那么该方法内部就会创建一个长度为集合的size的数组 当指定类型的数组的长度大于了集合的size,就不会新建数组,而是使用传递进来的数组。 所以创建一个刚刚好的数组最优 2.为什么要把集合转换成数组? 为了限定对元素进行操作,不需要进行增删了。 */ String[] arr = al.toArray(new String[al.size()]);//toArray(T); 集合转成数组 System.out.println(Arrays.toString(arr)); } }
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
相关文章推荐
- 黑马程序员---java----集合框架工具类:collections,Arrays和一些类
- 黑马程序员——JAVA基础之Collections和Arrays,数组集合的转换
- 黑马程序员——集合、集合框架工具类(collections和Arrays)和其他对象
- 黑马程序员_<<Collections,Arrays>>
- 黑马程序员_集合3(HashMap,HashTable,TreeMap,Arrays,Collections等)
- 黑马程序员——Collections、Arrays、其他对象
- [黑马程序员] 集合框架2——Map系 & 集合工具类(Collections、Arrays)
- 黑马程序员_学习笔记:10) 集合框架2:Set(HashSet、TreeSet)、Map(Hashtable、HashMap、TreeMap)、Collections、Arrays
- 黑马程序员——Java要点笔记——工具类Collections&Arrays
- 黑马程序员——Java之集合框架工具类Collections、Arrays以及Java新特性
- 黑马程序员_集合学习之Map,Collections,Arrays与高级for
- 黑马程序员_java基础7--Map和Collections和Arrays
- 黑马程序员—java基础学习--Map集合、Collections,Arrays工具类
- 黑马程序员——Java基础--集合框架工具类:Collections、Arrays、其他对象
- 黑马程序员_Java_collections and Arrays(工具类)
- 黑马程序员 java 基础 毕向东 面向对象 集合框架 工具类 Collections and Arrays
- Java基础---泛型、集合框架工具类:collections和Arrays (黑马程序员)
- 黑马程序员_专题:工具类的复习(Arrays工具类,Collections工具类,System系统类,Runtiem类)
- 黑马程序员——集合(二)--Collections、Arrays、泛型
- 黑马程序员——Java基础---泛型、集合框架工具类:Collections和Arrays、JDK 1.5新特性