Java常用数据结构

本文总结一下java常用的数据结构和其常用方法,主要是在算法题中的应用。

数组

1
2
3
4
5
6
7
8
9
10
11
12
13
//init
int[] arrInt = new int[22];
double[] myList = {1.9, 2.9, 3.4, 3.5};

//get ith
int i = arrInt[3];

// get size
int len = arrInt.length;

//sort
Arrays.sort(arrInt);

ArrayList

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//init
Integer[] intList = {1, 2, 3, 4, 5};
List<Integer> list0 = Arrays.asList(intList);
List<Integer> list = new ArrayList<>();

//get ith
int i = list.get(3);
// get size
int len = list.size();
//sort
Collections.sort(list);
list.sort(Collections.reverseOrder());
list.sort((a, b) -> (a - b));
//remove
list.remove(1);
//add
list.add(4);
//empty
boolean em = list.isEmpty();
//subList
List<Integer> subList = list.subList(0,3);

Deque(双端队列)

有两种实现,链表版本和数组版本

可以当成是队列或者栈来用,完全兼容了队列和栈的方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// init
Deque<Integer> deque = new LinkedList<>();
Deque<Integer> deque1 = new ArrayDeque<>();
/*
as queue:
add from the tail
remove from the head
*/
//offer
deque.offerLast(3);
deque.offer(3);

//poll
deque.poll();
//peek
deque.peek();
//empty
deque.isEmpty();
/*
as stack
add from the head
remove from the head
*/
//push
deque.offerFirst(3);
deque.push(4);
//pop
deque.pop();
//peek
deque.peek();
//empty
deque.isEmpty();

queue

直接用上文的双端队列实现,常见方法:

  • offer:队尾添加元素
  • poll:队头获取元素
  • peek:查看队头元素但是不出队
  • empty:判断为空

    stack

同理用上面的双端队列,不用老的stack了

  • push,栈头加入元素,入栈
  • pop,栈顶获取元素,出栈
  • peek,查看栈顶元素
  • empty,判断为空

    StringBuilder

用于构造string,对于不可变的string,最好用StringBuilder来构造,而不是直接修改String,这相当于每次创建新的string了。

1
2
3
4
5
6
7
8
9
StringBuilder sb = new StringBuilder(10);
sb.append("Runoob..");
System.out.println(sb);
sb.append("!");
System.out.println(sb);
sb.insert(8, "Java");
System.out.println(sb);
sb.delete(5,8);
System.out.println(sb); er

Set

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// init
HashSet<String> set = new HashSet<>();
//add
set.add("111");
//size
set.size();
//contains
set.contains("111");
//remove
set.remove("111");
//iterator
for (String str : set) {
System.out.println(str);
}

HashMap

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// init
Map<String, String> map = new HashMap();

//add
map.put("1", "1");

//get
map.get("111");

//getOrDefault
map.getOrDefault("111", "default");

//size
map.size();

//contains
map.containsKey("111");

//remove
map.remove("111");

//iterator
for (String str : map.keySet()) {
System.out.println(str + ":" + map.get(str));
}

Java常用数据结构
http://www.bake-data.com/2024/04/02/Java常用数据结构/
Author
shuchen
Posted on
April 2, 2024
Licensed under