1:Stack栈
栈是一种先进后出的数据结构。例如:在文本编辑器上都有撤销功能,那么每次使用的时候,最后一次的编辑操作永远是最先撤销的,那么这个功能就是利用栈来实现的,栈的基本操作形式如下。
案例:实现栈的操作
import java.util.Stack; public class JavaAPIDemo { public static void main(String[] args) throws Exception { Stack<String> all = new Stack<String>() ; all.push("A") ; all.push("B") ; all.push("C") ; System.out.println(all.pop()); System.out.println(all.pop()); System.out.println(all.pop()); System.out.println(all.pop()); // 无数据、EmptyStackException } }
通过此时的操作可以发现,所有的保存之后将按照倒序的形式进行弹出,如果栈已经空了,则会抛出空栈异常。
2:Queue对列
Quene描述的是一个队列。而队列的主要特点是实现先进先出的操作形式。基本的操作形式如下。
案例:实现队列操作
import java.util.LinkedList; import java.util.Queue; public class Test { public static void main(String[] args) throws Exception { Queue<String> queue = new LinkedList<String>() ; queue.offer("X") ; // 追加队列数据,通过队尾追加 queue.offer("A") ; // 追加队列数据,通过队尾追加 queue.offer("Z") ; // 追加队列数据,通过队尾追加 System.out.println(queue.poll()); // 弹出数据、X System.out.println(queue.poll()); // 弹出数据、A System.out.println(queue.poll()); // 弹出数据、Z } }
除了LinkedList子类之外,还有一个优先级队列的概念,可以使用 PriorityQueue还是先优先级队列(比较功能)。
案例:使用优先级队列。
import java.util.PriorityQueue; import java.util.Queue; public class JavaAPIDemo { public static void main(String[] args) throws Exception { Queue<String> queue = new PriorityQueue<String>() ; queue.offer("X") ; // 追加队列数据,通过队尾追加 queue.offer("A") ; // 追加队列数据,通过队尾追加 queue.offer("Z") ; // 追加队列数据,通过队尾追加 System.out.println(queue.poll()); // 弹出数据、X System.out.println(queue.poll()); // 弹出数据、A System.out.println(queue.poll()); // 弹出数据、Z } }
对于队列的选用原则也是需要根据实际的项目环境来决定的。
3:Properties属性操作
import java.util.Properties; public class Test { public static void main(String[] args) throws Exception { Properties prop = new Properties() ; // 设置的内容只允许是字符串 prop.setProperty("mldn", "www.mldn.cn") ; prop.setProperty("mldnjava", "www.mldnjava.cn") ; System.out.println(prop.getProperty("mldn")); System.out.println(prop.getProperty("sina","NoFound")); System.out.println(prop.getProperty("sina")); } }
案例:将属性内容保存在文件之中
import java.util.Properties; import java.io.File; import java.io.FileOutputStream; public class Test { public static void main(String[] args) throws Exception { Properties prop = new Properties() ; // 设置的内容只允许是字符串 prop.setProperty("mldn", "www.mldn.cn") ; prop.setProperty("mldnjava", "www.mldnjava.cn") ; prop.setProperty("BeiJing", "北京"); prop.store(new FileOutputStream(new File("D:"+File.separator+"info.properties")), "中文的注释看不见的-English"); } }
通过程序的执行可以发现,的确可以实现资源文件的输入处理,但是如果输出的是中文则自动帮助用户进行处理。
案例:读取资源文件
import java.io.File; import java.io.FileInputStream; import java.util.Properties; public class Test { public static void main(String[] args) throws Exception { Properties prop = new Properties() ; prop.load(new FileInputStream(new File("D:" + File.separator + "info.properties"))); System.out.println(prop.getProperty("mldn")); } }
使用Properties类型的最大特点是可以进行资源内容的输入与输出的梳理操作,但是在实际的开发之中Propertites往往用于读取配置资源的信息,这一点主要是在标准的设计之中做程序初始化时候使用。
4:Collections工具类
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Test { public static void main(String[] args) throws Exception { List<String> all = new ArrayList<String>(); Collections.addAll(all, "Hello", "World", "MLDN"); System.out.println(all); } }
案例:数据的反转
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Test{ public static void main(String[] args) throws Exception { List<String> all = new ArrayList<String>(); Collections.addAll(all, "Hello", "World", "MLDN"); Collections.reverse(all); System.out.println(all); } }
范例:使用二分查找
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Test { public static void main(String[] args) throws Exception { List<String> all = new ArrayList<String>(); Collections.addAll(all, "Hello", "World", "MLDN"); Collections.sort(all) ; // 先进行排序处理 System.out.println(all); System.out.println(Collections.binarySearch(all, "MLDN")); } }