Java集合
本文介绍Java集合的数据结构,与简单测试。为后续学习算法打基础。
List
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import java.util.ArrayList; import java.util.List;
public class Test { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("apple"); list.add("pear"); list.add("apple"); System.out.println(list.size()); list.remove(1); System.out.println(list.size()); System.out.println(list.get(1)); } }
|
List是一种顺序列表接口常用方法:
- 在末尾添加一个元素:boolean add(E e)
- 在指定索引添加一个元素:boolean add(int index, E e)
- 删除指定索引的元素:E remove(int index)
- 删除某个元素:boolean remove(Object e)
- 获取指定索引的元素:E get(int index)
- 获取链表大小(包含元素的个数):int size()
Map
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import java.util.HashMap; import java.util.Map;
public class Test { public static void main(String[] args) { Map<String, String> map = new HashMap<>();
map.put("s","bbbbb"); map.put("a","aaaaa"); System.out.println(map.get("s"));
for (String key : map.keySet()){ System.out.println(map.get(key)); }
} }
|
Properties
Java默认配置文件以.properties为扩展名,每行以key=value表示。java内置Properties读取配置文件非常简单。
典型配置文件:
1 2 3
| last_open_file=1.txt auto_save_interval=60
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import java.io.FileNotFoundException; import java.util.Properties;
public class Test { public static void main(String[] args) throws FileNotFoundException,Exception{
String f = "配置文件"; Properties props = new Properties(); props.load(new java.io.FileInputStream(f));
String filepath = props.getProperty("last_open_file"); String interval = props.getProperty("auto_save_interval", "120");
System.out.println(filepath); System.out.println(interval);
} }
|
Set
只需要存储不重复的key,并不需要存储映射的value,那么就可以使用Set。
Queue
队列(Queue)是一种经常使用的集合。Queue实际上是实现了一个先进先出(FIFO:First In First Out)的有序表。它和List的区别在于,List可以在任意位置添加和删除元素,而Queue只有两个操作:
队列接口Queue定义了以下几个方法:
- int size():获取队列长度;
- boolean add(E)/boolean offer(E):添加元素到队尾;
- E remove()/E poll():获取队首元素并从队列中删除;
- E element()/E peek():获取队首元素但并不从队列中删除。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| import java.io.FileNotFoundException; import java.util.*;
public class Test { public static void main(String[] args) throws FileNotFoundException,Exception{
Queue<String> q = new LinkedList<>(); q.offer("aaaaaaa"); q.offer("bbbbbbb"); q.offer("ccccccc");
System.out.println(q.peek()); System.out.println(q.peek()); System.out.println(q.peek()); System.out.println("-------------"); System.out.println(q.poll()); System.out.println(q.poll()); System.out.println(q.poll());
} }
|
1 2 3 4 5 6 7
| aaaaaaa aaaaaaa aaaaaaa ------------- aaaaaaa bbbbbbb ccccccc
|
Deque
两头都出,这种队列叫双端队列(Double Ended Queue),学名Deque。
Java集合提供了接口Deque来实现一个双端队列,它的功能是:
- 既可以添加到队尾,也可以添加到队首;
- 既可以从队首获取,又可以从队尾获取。
用处:Deque当Stack使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| import java.io.FileNotFoundException; import java.util.*;
public class Test { public static void main(String[] args) throws FileNotFoundException,Exception{
Deque<String> q = new LinkedList<>(); q.offerLast("aaaaaaa"); q.offerLast("bbbbbbb"); q.offerLast("ccccccc");
System.out.println(q.peekLast()); System.out.println(q.peekLast()); System.out.println(q.peekLast()); System.out.println("-------------"); System.out.println(q.pollLast()); System.out.println(q.pollLast()); System.out.println(q.pollLast());
} }
|
1 2 3 4 5 6 7
| ccccccc ccccccc ccccccc ------------- ccccccc bbbbbbb aaaaaaa
|