java常见数据结构与操作

一、数组

(1)创建数组:ArrayList<Integer> arr = new ArrayList<>() 需要导包,但不需要指定数组大小

(2)添加元素:arr.add([index],value) 当在末端插入时时间复杂度是O(1)或O(n),有可能尾端无连续空间

(3)访问元素:arr.get(index)

(4)更新元素:arr.set(index,value)

(5)删除元素:arr.remove(value)

(6)数组长度:arr.size()   时间复杂度为O(1),内部计算好的

(7)遍历数组:循环

(8)查找元素:arr.contains(value)

(9)数组排序:升序Collections.sort(arr) 降序Collections.sort(arr,Collections.reverseOrder()) 时间复杂度为O(NlogN)

二、链表

(1)创建链表:LinkedList<Integer> list = new LinkedList<>()

(2)添加元素:list.add([index],value)

(3)访问元素:list.get(index)

(4)搜索元素:list.indexOf(value)

(5)更新元素:list.set(index,value)

(6)删除元素:list.remove(index)

(7)数组长度:list.size() 

三、队列

1)创建队列:Queue<Integer> queue = new LinkedList<>() 删除为O1

2)添加元素:queue.add()(会报异常错误)queue.offer() 在队尾元素

3)获取即将出队的元素:queue.peek()

4)删除即将出队的元素:queue.poll()

5)判断队列是否为空:queue.isEmpty() O(1)

6)队列长度:queue.size()

7)遍历队列(一般是边删除边遍历):While(!queue.isEmpty()){ int temp = queue.poll() }

四、栈

(1)创建栈:Stack<Integer> stack = new LinkedList<>() 删除为O(1)

(2)添加元素:stack.push()

(3)获取即将出队的元素:stack.peek()

(4)删除即将出队的元素:stack.pop()

(5)判断队列是否为空:stack.isEmpty() O(1)

(6)队列长度:stack.size()

五、哈希表

(1)创建哈希表:HashMap<Integer,String> map = new HashMap<>();

(2)添加元素:map.put(key,value)  时间复杂度O(1)

(3)更新元素:map.put(key,newValue) 时间复杂度O(1)

(4)删除元素:map.remove(key) 时间复杂度O(1)

(5)获取元素:map.get(key) 时间复杂度O(1)

(6)检查key存在:map.containsKey(key) 时间复杂度O(1)

(7)长度与元素:map.size() map.isEmpty()

(8)遍历哈希表:for( Integer key:map.keySet() )

六、堆

(1)创建堆:PriorityQueue<Integer> minheap = new PriorityQueue<>()

                    PriorityQueue<Integer>maxheap =new PriorityQueue<>(Collection.reverseOrder())

(2)添加元素:minheap.offer()

(3)获取顶元素:minheap.peek()

(4)删除元素:minheap.poll()

 

posted @ 2022-09-17 17:21  陈雪佩  阅读(75)  评论(0编辑  收藏  举报