Java基础(五十九)-集合工具类(Java类集框架)

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

在这里插入图片描述

在这里插入图片描述