集合数组工具类与常用系统API

来源:互联网 发布:java 二叉树容器 编辑:程序博客网 时间:2024/04/27 16:19

集合工具类

 

Collections类为集合工具类,没有提供构造函数,只对外提供静态成员方法,用于对各种集合提供扩展功能。


 

//将指定的多个元素添加到参数1指定的Collection集合中,多个元素可以以可变参数,也可以是一个数组。public static <T> boolean addAll(Collection<? super T> c, T... elements)//对一个已经排序的List集合折半查找,该集合内元素必需实现于Comparable。public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)//同上,但可以在查找过程中使用指定的自定义比较器。public static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)//将src集合覆盖到dest集合,需要保证dest集合的元素不小于src,否则报索引越界异常。public static <T> void copy(List<? super T> dest, List<? extends T> src)//判断两个集合中是否有相同元素public static boolean disjoint(Collection<?> c1, Collection<?> c2)//使用指定元素替换掉集合中的所有元素public static <T> void fill(List<? super T> list, T obj)//查询集合中包含指定元素的数量public static int frequency(Collection<?> c, Object o)//排序List集合内的元素,需要元素自身具备比较性。public static <T extends Comparable<? super T>> void sort(List<T> list)//同上,但可以在比较过程中使用自定义的比较器public static <T> void sort(List<T> list, Comparator<? super T> c)//获取集合中的最大元素,元素自身需要具备比较性,或使用重载方法指定一比较器public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)public static <T> T max(Collection<? extends T> coll,  Comparator<? super T> comp)//获取集合中的最小元素,元素自身需要具备比较性,或使用重载方法指定一比较器public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)public static <T> T min(Collection<? extends T> coll,  Comparator<? super T> comp)//将集合中的所有指定元素替换为新的元素public static <T> boolean replaceAll(List<T> list, T oldVal, T newVal)//重新打乱该集合内的排序顺序,这东西写游戏应该挺有用哈哈public static void shuffle(List<?> list)//功能同上,但可以指定一个随机数public static void shuffle(List<?> list, Random rnd)//反转一个集合中的所有元素顺序public static void reverse(List<?> list)//将原集合中元素的比较方法强行逆转然后转为一个比较器返回。适用于构造集合时public static <T> Comparator<T> reverseOrder()//将一个比较器的比较方法强行逆转,返回一个新的比较器public static <T> Comparator<T> reverseOrder(Comparator<T> cmp)//根据索引交换一个List集合中的两个元素的位置public static void swap(List<?> list,int i, int j)//将一个线程不同步集合封装同步功能,由此可见Hashtable与Vector已经几乎不再使用。public static <T> List<T> synchronizedList(List<T> list)public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m)public static <T> Set<T> synchronizedSet(Set<T> s)//返回一个常量状态的原集合复本public static <T> List<T> unmodifiableList(List<? extends T> list)public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m)4public static <T> Set<T> unmodifiableSet(Set<? extends T> s)


 

 

数组工具类


Arrays 是专门为数组提供的工具类,该类内更多的是一些被重载的方法,用于对数组的各种操作。如:


以下方法重载了多种基本数据

public static int binarySearch(byte[] a, byte key)                 //二分查找方法,并且提供了可以指定查找范围的重载方法。//将一个数组复制到一个新的数组中,并且可以设定新数组的长度,返回该新数组。public static boolean[] copyOf(boolean[] original, int newLength)       //复制一个数组的指定范围到一个新的数组中,返回这个新数组public static boolean[] copyOfRange(boolean[] original, int from, int to)  public static boolean equals(boolean[] a, boolean[] a2)           //比较两个数组的内容public static int hashCode(boolean[] a)                           //返回一个数组内容组成的Hash值public static void sort(byte[] a)                                 //排序数组public static String toString(boolean[] a)                        //将数组内容组合成字符串返回//将数组中的所有元素使用新元素替换,并且提供了可以指定替换范围的重载方法public static void fill(boolean[] a,boolean val)


没有重载的方法

//数组的深层次比较,不单比较数组内容,并且如果数组中存放的是引用同时比较引用指向的对象的内容public static boolean deepEquals(Object[] a1, Object[] a2) //将数组映射到List集合中,此方法是连接collection到数组之间的桥梁,public static <T> List<T> asList(T... a)

 

  将数组转为集合并且是复制,而是将原数组中的元素逐一映射到集合中去,所以不能添加和删除,修改List元素即是修改原数组内容。而asList方法可以接收一个数组名,也可以接收多个参数被视为一个数组,所以如果传递的参数是基本数据类型的数组,那么该方法会将这个数组视为一个元素,而不是一个数组。

 


常用的一些系统API,Java封装了系统的API函数,并以更简单的方法提供给程序员使用,操作方便更直观。


Systemo类

public static Properties getProperties()           //方法可以获取本机的系统信息。public static String getProperty(String key)         //获取本机系统信息指定的值public static String setProperty(String key,String value)//设置本机的一个系统信息public static int identityHashCode(Object x)              //获取对象的默认Hash值,哈哈用这个可以测试内存地址了public static long nanoTime()                             //计时器来了public static long currentTimeMillis()                    //获取当前时间public static void exit(int status)                       //终止当前正在运行的虚拟机


Properties该类继承自Hashtable,专门为配置文件提供了一组功能。

public String getProperty(String key)                     //根据键获取一个值public void list(PrintStream out)                         //将对象关联一个输出流,将当前Properties对象的属性列表输出到流中。public void load(InputStream inStream)                    //关联一个输入流,将流中键值对信息设置到当前Properties属性列表中。public void loadFromXML(InputStream in)                   //专用加载XML文件信息public Object setProperty(String key, String value)       //根据键设置一个值 public void store(OutputStream out, String comments)      //同list作用基本一样,可以添加注释信息 public Set<String> stringPropertyNames()                  //将Properties集合中的键转成Set集合


 Properties使用示例:

 

  类加载器类ClassLoader的public InputStream getResourceAsStream(String name)方法可以通过指定一个字符串形式的文件路径加载一个文件,返回一个字节输入流。通过该流可以方便的读取文件内容。如:

//获取main函数所在类的Class实例对象,Class cla = MyClass.class;//调用它的getResourceAsStream指定一个文件名,返回该文件的输读取流对象。该文件必须与MyClass类的class文件同目录InputStream is = cla.getResourceAsStream("config.properties");//创建一个配置文件专用的双列集合类对象Properties props = new Properties();//将流中数据加载到集合中props.load(is);//关闭文件流is.close();//获取已经被装入集合中的配置文件键值对信息String className = props.getProperty("className");



Runtime类

public int availableProcessors()   // 可用处理器的数目public long freeMemory()           // 虚拟机可用内存空间public long totalMemory()          // 虚拟机的内存总量public Process exec(String command)// 启动子进程来了,也太省事了,就是没句柄可以用了有点束缚感啊

DateFormat,Calendar,TimeZone 日期时间的操作和格式化类

Math 数学运算类 Random随机数类


 

URL类

  很牛B的一个类,内置封装了Socket的同时还有http协议。

 

  可以直接将一个URL地址以字符串形式封装进URL对象,如URL url = new URL(http://127.0.0.1)。之后调用他的openConnection方法即可直接与该服务器建立连接。如  URLConnection connUrl = url.openConnection()。

 

  其后通过    connUrl.getOutputStream connUrl.getInputStream方法拿到与该服务器之间的网络流对象。通过读写流对象与服务器交互信息。而且 URLConnection 内部会对http协议消息头做处理。

原创粉丝点击