Java上路15-集合工具类
来源:互联网 发布:交通组织优化方案实例 编辑:程序博客网 时间:2024/06/06 17:24
一. Collections:
Collections类完全由在collection上进行操作或返回collection的静态方法组成。
1. 排序、查询:
import java.util.*; class CollectionsDemo{ public static void main(String[] args) { sortDemo(); } public static void sortDemo() { List<String> list=new ArrayList<String>(); list.add("DaTo"); list.add("Vigiles"); list.add("YinZi"); list.add("YinZi"); list.add("LiEr"); sop(list); Collections.sort(list); //自然排序 sop(list); Collections.sort(list, new StringLengthComparator()); //按比较器排序 sop(list); sop("最大:"+Collections.max(list)); //最大。根据元素的自然顺序 sop("最长:"+Collections.max(list, new StringLengthComparator())); //按比较器选取最大 //搜索。binarySearch使用二分搜索法搜索指定列表,用于有序的集合 sop("YinZi索引:"+Collections.binarySearch(list,"YinZi")); sop("Gaog索引:"+Collections.binarySearch(list,"Gaog")); sop("XinZai索引:"+Collections.binarySearch(list,"XinZai")); //binarySearch原理 int index=halfSearch(list,"cc"); } public static int halfSearch(List<String> list, String key) { 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); if (num>0) { max=mid-1; } else if (num<0) { min=mid+1; } else { return mid; } } return -min-1; } public static void sop(Object obj) { System.out.println(obj); }} class StringLengthComparator implements Comparator<String>{ public int compare(String s1, String s2) { if (s1.length()>s2.length()) { return 1; } else if(s1.length()<s2.length()) { return -1; } else { return s1.compareTo(s2); } }}
2. 逆转排序:
import java.util.*; class CollectionsDemo{ public static void main(String[] args) { sortDemo(); } public static void sortDemo() { //TreeSet<String> list=new TreeSet<String>(); //TreeSet<String> list=new TreeSet<String>(Collections.reverseOrder()); //TreeSet<String> list=new TreeSet<String>(new MyComparator()); TreeSet<String> list=new TreeSet<String>(Collections.reverseOrder(new MyComparator())); list.add("DaTo"); list.add("Vigiles"); list.add("YinZi"); list.add("LinErr"); for(Iterator it=list.iterator();it.hasNext();) { System.out.println(it.next()); } }} //长度比较器class MyComparator implements Comparator<String>{ public int compare(String s1, String s2) { if (s1.length()>s2.length()) { return 1; } else if(s1.length()<s2.length()) { return -1; } else { return s1.compareTo(s2); } }}
二. Arrays:
此类包含用来操作数组(比如排序和搜索)的各种方法。
1. 数组变集合:
import java.util.*; class ArraysDemo{ public static void main(String[] args) { String[] arr={"book","foot", "desk", "paper", "bag"}; List<String>list=Arrays.asList(arr); //将数组变成集合,不可以使用集合的增删方法,因为长度固定。否则发生UnsuppportedOperationException异常 sop(list); int[] num={34, 52, 13, 33}; List<int[]>ln=Arrays.asList(num); sop(ln); Integer[] nums={23, 54, 35, 65,6}; List<Integer>li=Arrays.asList(nums); sop(li); } public static void sop(Object obj) { System.out.println("\n"+obj); }}
2. 集合变数组:
import java.util.*; class ArraysDemo{ public static void main(String[] args) { ArrayList<String> al=new ArrayList<String>(); al.add("desk"); al.add("book"); al.add("foot"); /* 高级for循环遍历集合,只能获取元素,不能进行操作。 迭代器除了遍历,还可以remove,如果使用ListIterator,还可以在遍历增删改查。 高级for有局限性:必须有被遍历的目标。遍历数组建议使用传统for。 */ for (String s:al) { sop(s); } int[] num={85,3,14,2,96}; for (int i:num) { sop(i); } /* 如果指定类型的数组长度小于集合的size,则该方法自动创建一个长度为size的数组 如果指定类型的数组长度大于集合的size,会使用传递进来的数组 */ String[] arr=al.toArray(new String[al.size()]); sop(Arrays.toString(arr)); } public static void sop(Object obj) { System.out.println("\n"+obj); }}
三. 附加:
JDK1.5后为了简化代码出现了多个新特性。
/*1.静态导入: 当类名重名时,须要指定具体的包名; 当方法重名时,需要指定所属的对象或类名。2.可变参数: 是数组作为参数的简写形式; 只能放在参数列表的最后。*/import staticjava.lang.System.*;import java.util.*;import staticjava.util.Arrays.*; class NewJdk //extends Object{ public static void main(String[] args) { int[] arr={5,9,3,7,2}; //使用静态方法。省略了Arrays. sort(arr); int index=binarySearch(arr, 9); //使用静态导入的方法。省略了System. out.println("排序后9的索引:"+index); //因为NewJdk默认继承Object,有了重名的toString方法,所以要指定 out.println(Arrays.toString(arr)); //arguments(1,5,5,5,6,9); arguments("variable","arguments",5,6,9); } //可变参数。放在参数列表最后 //public static void arguments(int...nums) public static void arguments(String s1,String s2, int... nums) { out.println(s1+" "+s2); for (int i=0; i<nums.length;i++) { out.print(nums[i]); } }}
四. 其它常用类:
1.System:
import java.util.*; class CommonClass{ public static void main(String[] args) { //自定义系统信息 System.setProperty("MyJava","Vigiles"); //获取指定系统信息 String vl=System.getProperty("os.name"); System.out.println("vl="+vl); //Properties是Hashtable的子类 Properties prop=System.getProperties(); //System.out.println(prop); //通过map方法取出prop集合的所有元素 for (Object obj:prop.keySet()) { Stringvalue=(String)prop.get(obj); System.out.println(obj+"::"+value); } }}
2.Runtime:
这个类没有构造函数,应用程序不能创建自己的 Runtime 类实例。但有getRuntime()返回与当前 Java 应用程序相关的运行时对象。
class CommonClass{ public static void main(String[] args) throws Exception { Runtime run=Runtime.getRuntime(); //打开记事本,因为其在环境变量中有设置,可以省略全路径 //run.exec("notepad"); //创建一个进程 //Process p=run.exec("notepad"); //用记事本打开java文件 Process p=run.exec("notepadCommonClass.java"); Thread.sleep(1000); //停留一秒 //杀死进程 p.destroy(); }}
3.Date:
类 Date 表示特定的瞬间,精确到毫秒。
import java.util.Date;import java.text.SimpleDateFormat; class CommonClass{ public static void main(String[] args)throws Exception { Date date=new Date(); System.out.println(date); //将模式封装到SimpleDateFormat对象 SimpleDateFormat sdf=newSimpleDateFormat("yyyy年MM月dd日 E ahh:mm:ss"); //指定Date对象 String time=sdf.format(date); System.out.println("Now:"+time); }}
4.Calendar:
为特定瞬间与日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。
import java.util.Calendar; class CommonClass{ public static void main(String[] args)throws Exception { Calendar c=Calendar.getInstance(); //返回给定日历字段的值 System.out.println(c.get(Calendar.YEAR)+"年"+ (c.get(Calendar.MONTH)+1)+"月"+ //从0开始 c.get(Calendar.DAY_OF_MONTH)+"日"); //将给定的日历字段设置为给定值 c.set(2012, 4, 6); System.out.println("\n"+c); //根据日历的规则,为给定的日历字段添加或减去指定的时间量 c.add(Calendar.YEAR, 2); System.out.println("\n"+c); c.add(Calendar.MONTH, -32); System.out.println("\n"+c); }}
5.Math:
执行基本数学运算的方法。
import java.util.Random; class CommonClass{ public static void main(String[] args)throws Exception { //ceil返回大于参数值的最小整数值 double d1=Math.ceil(12.34); System.out.println("double:"+d1); //ceil返回小于参数值的最大整数值 double d2=Math.floor(12.34); System.out.println("floor:"+d2); //四舍五入 double d3=Math.round(12.34); System.out.println("round:"+d3); //前者的后者次方 double d4=Math.pow(2, 3); System.out.println("pow:"+d4); //随机数 double d5=Math.random()*10; System.out.println("random:"+d5); //使用Random类生成随机数 Random r=new Random(); for (int i=0; i<5; i++) { int d=r.nextInt(10)+1; System.out.print(d); } }}
- Java上路15-集合工具类
- Java上路12-集合
- Java上路14-Map集合
- java集合工具类
- Java工具类集合
- JAVA-集合工具类
- java集合工具类
- #.Java集合工具类
- Java--工具类--集合类
- java--集合框架工具类
- Java 集合工具类 Collections
- Java 集合工具类Collections
- Java基础-->集合-工具类
- java 集合类工具函数
- java集合(工具类Collections)
- java Collections集合工具类
- Java 集合工具类 Collections
- Java--Collections集合工具类
- ios开发 数据存储
- 线程局部变量
- html,css,js代码格式化,及其压缩
- dll与lib之间的区别
- perl ole接口 API演示介绍
- Java上路15-集合工具类
- Redis入门
- C++ 有关赋值构造函数 拷贝构造函数 自动型别转换
- Redis在Linux中的安装与启动
- HDOJ 1241 Oil deposits
- php 配置GD2.dll 和 php_curl.dll
- SBJson用法
- JSP————标签小结
- WP SDK7.1中文版+SDK7.1.1更新包安装方法