JAVA SE篇--05 棧、佇列、HashMap
阿新 • • 發佈:2019-02-16
1.佇列
java.util.Queue 佇列可以存放一組元素,但是存取元素必須遵循,先進先出的原則。
public class QueueDemo { public static void main(String[] args) { /* * LinkedList也實現了佇列介面,因為它可以儲存一組元組 * 並且收尾增刪快,正好符合佇列的特點 */ Queue<String> queue=new LinkedList<String>(); queue.offer("one"); queue.offer("two"); queue.offer("three"); queue.offer("four"); System.out.println(queue); /* * E poll() * 出隊操作,從隊首獲取元素,獲取後該元素就從佇列中刪除了 */ String str=queue.poll(); System.out.println(str); System.out.println(queue); /* * E peek() * 引用隊首元素,但是不做出隊操作 */ str=queue.peek(); System.out.println(str); System.out.println(queue); System.out.println("遍歷開始"); System.out.println("size:"+queue.size()); for(int i=queue.size();i>0;i--) { str=queue.poll(); System.out.println("元素:"+str); } System.out.println("遍歷完畢"); System.out.println(queue); } }
2.棧
儲存一組元素,但是存取元素必須遵循先進後出原則,通常為了實現後退這類功能會使用。
public class StackDemo { public static void main(String[] args) { /** * java.util.Deque * 雙端佇列兩端都可以進出隊 * 當只調用從一端進出隊操作時,就形成了棧結構 * 因此,雙端佇列為棧提供了兩個方法 * push,pop */ /* * void push(E E) * 入棧操作,最後入棧的元素在棧頂 */ Deque<String> stack=new LinkedList<String>(); stack.push("one"); stack.push("pop"); stack.push("three"); stack.push("four"); System.out.println(stack); while(stack.size()>0) { String str=stack.pop(); System.out.println(str); } } }
3.Map
java.util.Map :Map看起來像是一個多行兩列的表格,一key-value對的形式存放元素,在map中key不允許重複(重複是依靠key的equals判斷).常用的實現類為:HashMap
public class MapDemo1 { public static void main(String[] args) { Map map=new HashMap(); /* * V put(K k,V v) * 將給定的key-value對存入Map * 由於Map要求key不允許重複,所以使用Map已有的key存入一個新的value, * 那麼返回值為該key原來對應的value。若是一個新的value,則返回值為null */ map.put("語文", 99); map.put("數學", 97); map.put("英語", 96); System.out.println(map); /* * V Get(K k) * 根據給定的key獲取value,若當前Map中沒有給定的key,則返回值為null */ Integer value=(Integer) map.get("數學"); System.out.println(value); /* * V remove(K v) *刪除給定的key所對應的key-value對 *返回值為被刪除的key-value對中的value */ } }
4.遍歷Map
遍歷所有的key;遍歷所有的key-value對;遍歷所有的value
public class MapDemo2 {
public static void main(String[] args) {
Map<String, Integer>map=new HashMap<String,Integer>();
map.put("語文", 99);
map.put("數學", 97);
map.put("英語", 96);
System.out.println(map);
/*
* 遍歷所有的key
* Set<k> keySet()
* 該方法會將當前Map中所有的key存入一個Set集合後返回,那麼遍歷該集合
* 就等於遍歷了所有的key
*/
Set<String>keySet=map.keySet();
for(String str:keySet) {
System.out.println(str);
}
/*
* 遍歷每一組鍵值對
* Map中每一組鍵值對都是由Map的內部類
* java.util.Map.Entry的一個例項表示的的
* Entry有兩個方法:getKey,getValue。可以分別獲取這一組鍵值對的key與value
*
* Set<Entry>entrySet
* 該方法會將Map中每一組鍵值對(Entry例項)
* 存入一個Set集合返回
*/
Set<Entry<String,Integer>>entrySet=map.entrySet();
for(Entry<String,Integer> e:entrySet) {
String key=e.getKey();
Integer value=e.getValue();
System.out.println(key+value);
}
/*
* 遍歷所有的value
* Collection values()
*該方法會將當前Map中所有的value存入一個集合後返回
*/
Collection<Integer> values=map.values();
for(Integer value:values) {
System.out.println(value);
}
}
}
5.檔案操作
/**
* java.io.File
* File的每一個例項可以表示檔案系統中的一個檔案或目錄
* 使用File可以:
* 1、訪問檔案或目錄的屬性(大小、名字、修改時間等)
* 2.操作檔案或目錄(建立,刪除檔案和目錄)
* 3.訪問目錄中的所有內容
*
* 但是不可以訪問檔案資料
* @author Administrator
*
*/
public class FileDemo1 {
public static void main(String[] args) {
File file=new File("."+File.separator+"demo.txt");
//獲取名字
String name=file.getName();
System.out.println("name:"+name);
//大小
long length=file.length();
System.out.println("大小為:"+length+"位元組");
//是是否是檔案
boolean isFile=file.isFile();
System.out.println("是否為檔案:"+isFile);
//是否為目錄
boolean isDirectory=file.isDirectory();
System.out.println("是否為目錄:"+isDirectory);
//是否隱藏了
boolean isHidden=file.isHidden();
System.out.println("是否隱藏了"+isHidden);
//最後修改時間
long time=file.lastModified();
Date date=new Date(time);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
System.out.println(sdf.format(date));
}
}