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

集合工具类

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)4
public 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协议消息头做处理。

猜你喜欢

转载自blog.csdn.net/cqn2bd2b/article/details/126511600
今日推荐