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"));
}
}