JAVASE----12----集合零散知识
来源:互联网 发布:js 导出excel 编辑:程序博客网 时间:2024/04/18 20:21
1,Collections:操作集合
2,Arrays:操作数组
4, 可变参数
import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class CollectionsDemo {/** * 集合框架的工具类 * Collections */public static void main(String[] args) {Demo();}public static void Demo(){List<String>list=new ArrayList<String>();list.add("ffffff");list.add("adsas");list.add("sdf");list.add("b");list.add("b");System.out.println(list);//[ffffff, adsas, sdf, b, b]//按自然顺序排序Collections.sort(list);System.out.println(list);//[adsas, b, b, ffffff, sdf]//查询最大值String max=Collections.max(list); System.out.println(max); //sdf//重载sort//按长度排序,实现比较器。Collections.sort(list,new StrLenComparator());System.out.println(list); //[b, b, sdf, adsas, ffffff]//查找int index=Collections.binarySearch(list, "sdf");//int index=halfSearch(list," bb", new StrLenComparator() {//}); //-2System.out.println(index); //2 找不到返回-min-1}public static int halfSearch(List<String>list, String key,Comparator<String>cmp){ int max,min,mid; max=list.size()-1; min=0; while(min<max) { mid=(max+min)>>1; String str=list.get(mid); // int num=str.compareTo(key); int num=cmp.compare(str, key); if(num>0) max=mid-1; else if(num<0) min=mid+1; else return mid; } return -min-1;}}class StrLenComparator implements Comparator<String>{@Overridepublic int compare(String s1, String s2) {if(s1.length()>s2.length()) return 1;if(s1.length()<s2.length()) return -1;else return s1.compareTo(s2);}/*class Student{} list.add(new Sudent()); public static<T extends Comparable<? super T>> void sort<List<T>list> { }*/}//Collections.fill()--将集合中的元素全部替换成某一个//Collections.replaceAll(list,oldValue,newValue)--替换某一个元素//Collections.reverse(list); //反转。
import java.util.Collections;import java.util.Iterator;import java.util.TreeSet;public class CollectionsDemo2 {/** * @param args */public static void main(String[] args) {orderDemo();}public static void orderDemo(){//逆向反转自然顺序的比较器//重载方法--强行逆转比较器的顺序TreeSet<String>ts=new TreeSet<String>(Collections.reverseOrder());ts.add("absdsd");ts.add("aaa");ts.add("kkk");ts.add("ccc");Iterator<String> it=ts.iterator();while(it.hasNext()){System.out.println(it.next());//kkk//ccc//absdsd//aaa}// 随机排序//Collections.shuffle();}}
2,Arrays:操作数组
import java.util.Arrays;import java.util.List;public class ArraysDemo {/** * asList: 将数组变成list集合 */public static void main(String[] args) {int []arr={2,4,5};System.out.println(Arrays.toString(arr));//[2, 4, 5]String[] arrs={"abc","cc","kkk"};List<String> list=Arrays.asList(arrs);System.out.println(list); //[abc, cc, kkk]/*把数组变成list集合的好处。可以使用集合的思想和方法来操作数组中的元素。注意:将数组变成集合,不可以使用集合的增删方法,因为数组的长度是固定的。可以使用contains,get,indexof() sublist();如果增删了,会发生UnsupportedOperationException*///list.add("qq");//UnsupportedOperationException List<int[]>li=Arrays.asList(arr);//[[I@61de33]List ll=Arrays.asList(arr); //[[I@61de33] System.out.println(li); Integer [] inte={2,4,6,7};List Li=Arrays.asList(inte);//List<Integer> Li=Arrays.asList(inte);System.out.println(Li); //[2, 4, 6, 7]/*如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素 * 如果数组中的元素都是 基本数据类型,那么会将该数组作为几个钟的元素存在。 * */}}
import java.util.ArrayList;import java.util.Arrays;public class CollectiontoArray {/** * 集合变数组, * Collection 接口中的toArray方法 */public static void main(String[] args) {ArrayList<String>al=new ArrayList<String>();al.add("abc");al.add("asdsd");al.add("sdff");al.add("a");/* * 1,指定类型的数组到底定义多长呢?当指定类型的数组的长度小于了集合的size,那么该方法内部 * 会创建一个新数组,长度为集合的size。 * 当指定类型的数组的长度大于了集合的size,就不会新创建数组,而是使用传递进来的数组 * 所以使用一个刚刚好的数组最优。 * * 2,为什么要将集合变数组: * 为了限定对元素的操作,不需要进行增删了。 */String []arr=al.toArray(new String[al.size()]);System.out.println(Arrays.toString(arr)); //[abc, asdsd, sdff, a]}}
3,foreach:
import java.util.ArrayList;public class ForEachDemo {/** * foreach: * 格式: * for(数据类型 变量名:被遍历的集合(Collection)或者数组) * {} * * 对集合进行遍历: * 只能获取集合元素,但是不能对集合进行操作。 * 迭代器除了遍历,还可以进行remove集合中元素的操作。 * 如果使用ListIterator,还可以在遍历过程中进行增删改查的操作。 * * for 和foreach 有什么区别? * foreach 有一个局限性,必须有被遍历的目标。 * 建议在遍历数组的时候,使用for,因为可以定义脚标。 * */public static void main(String[] args) {ArrayList<String>al=new ArrayList<String>();al.add("abc");al.add("asdsd");al.add("sdff");al.add("a");for(String s:al){System.out.println(s); //abc//asdsd//sdff//a}}}
4, 可变参数
show(1,2,3,4,5); show(1,2,3,4,5,6,7);}/* * 可变参数: * 不用每一次都手动的建立数组对象。 * 只要将要操作的元素作为参数传递即可 * 隐式将这些参数封装成了数组。
在使用时注意:可变参数一定要定义在参数列表最后面。 */public static void show(int...arr){System.out.println(arr.length);}}
- JAVASE----12----集合零散知识
- JAVA-day08 上午-集合零散知识、集合实现贪吃蛇
- 零散知识
- 零散知识
- Oracle 零散知识
- 零散知识收集
- sharepoint零散知识汇总
- 数据库零散知识
- Drupal零散知识笔记
- php零散知识笔记
- 零散知识总结
- java零散知识
- C++ 零散知识
- MySQL零散知识
- LINUX的零散知识
- 其他零散知识1
- linux 零散知识记载
- mac 零散知识记载
- Java反射获取泛型工具类
- 如何将MVC项目部署到 IIS 5.1
- jquery用户登录验证,是否有特殊字符
- ubuntu下获得管理员的权限
- MongoDB 入门指南、示例
- JAVASE----12----集合零散知识
- Asp.Net MVC3 简单入门第一季(一)环境准备
- linux 下rm -rf 后的恢复
- 如何在iOS中使用ZXing库
- Object instanceof Function 还是 Function instance of Object,是真是假,一一道来
- java创建timestmp的几种方式
- 使用Eclipse打包生成jar文件,解决CLASSPATH问题
- iOS 很有用到一些知识点!!!
- Drupal零散知识笔记