我是靠谱客的博主 暴躁小馒头,最近开发中收集的这篇文章主要介绍[java] 常用数据结构的定义以及相关函数1、数组及列表2、栈和队列3、哈希4、字符串,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
1、数组及列表
1. 数组 []
int[] array=new int[size];
int[] array = new int[]{1,2,3,4,5};
int[] array = {1,2,3,4,5};
自定义排序
nums是一个二维数组,里面的数组长度为2。下面的功能是对nums的第一个元素升序排序,若第一个元素一样则比较第二个元素。例如nums=[[1,3],[1,2],[0,5]],排序后为[[0,5],[1,2],[1,3]]
Arrays.sort(nums, new Comparator<int[]>() {
public int compare(int[] nums1, int[] nums2) {
if(nums1[0]==nums2[0]){
return nums1[1] - nums2[1];
}
return nums1[0] - nums2[0];
}
});
2. List (ArrayList和LinkedList)
定义
List<Integer> arrayList = new ArrayList<Integer>();
List<Integer> arrayList = new LinkedList<Integer>();
常用操作
- 访问某个值:
arrayList.get(i)
- 添加某个值:
arrayList.add(x)
- 长度:
arrayList.size()
- 转数组:
arrayList.toArray()
或arrayList.toArray(new int[arrayList.size()])
- 第一次出现x的索引位置:
arrayList.indexOf(x)
,最后出现x的索引位置用lastIndexOf
- 删除指定索引的对象:
arrayList.remove(i)
- 在索引为i的元素更改为x:
arrayList.set(i,x)
- 返回索引范围在
[i,j)
范围内的元素集合:arrayList.subList(i, j)
- 是否包含某个元素:
arrayList.contains(x)
- 是否为空:
arrayList.isEmpty()
- 清空:
arrayList.clear()
Iterator
Iterator it = list.iterator();
while (it.hasNext()) {
String next = (String) it.next();
// it.remove();删除当前元素
System.out.println(next);
}
ListIterator lit = list.listIterator();
while (lit.hasNext()) {
String next = (String) lit.next();
//lit.set("aa");用aa替换当前元素
//lit.add("bb");在当前元素后面插入bb
System.out.println(next);
}
//逆序遍历
while (lit.hasPrevious()) {
String next = (String) lit.previous();
System.out.println(next);
}
2、栈和队列
1. Stack
定义
Stack<Interger> stack = new Stack<Interger>();
常用操作
- 入栈:
stack.push(x)
- 出栈:
stack.pop()
- 查看栈头:
stack.peek()
- 是否为空:
stack.isEmpty()
2. Queue
定义
Queue<Interger> queue = new LinkedList<Interger>();
常用操作
- 入队:
queue.offer(x)
- 出队:
queue.poll()
- 查看队头:
stack.peek()
- 是否为空:
stack.isEmpty()
3. Deque
定义
Deque<Interger> deque = new LinkedList<Interger>();
常用操作
- 向队头插入元素:
deque.addFirst()
或者deque.offerFirst()
- 向队尾插入元素:
deque.addLast()
或者deque.offerLast()
- 返回并移除队头元素:
deque.removeFirst()
或者deque.pollFirst()
- 返回并移除队尾元素:
deque.removeLast()
或者deque.pollLast()
- 获取队头元素但不移除:
deque.getFirst()
或者deque.peekFirst()
- 获取队尾元素但不移除:
deque.getLast()
或者deque.peekLast()
- 弹出栈中元素:
deque.pop()
,等价于removeFirst()
- 向栈中压入元素:
deque.push()
,等价于addFirst()
4.PriorityQueue
可当作堆来使用
PriorityQueue<Integer> minHeap =new PriorityQueue<Integer>();//小顶堆,默认容量为11
PriorityQueue<Integer> maxHeap =new PriorityQueue<Integer>(11,new Comparator<Integer>(){//大顶堆,容量11
@Override
public int compare(Integer i1,Integer i2){
return i2-i1;
}
});
- peek():获取堆顶元素但不移除
- poll():获取并移除堆顶元素
- add():添加一个元素
- remove(Object o):移除值为o的元素,如果有的话
- size(),isEmpty() ,clear()
3、哈希
1. map
定义
HashMap<Integer, Integer> map=new HashMap<Integer, Integer>();
常用操作
- 添加:
map.push(key,value)
- 根据key更新value:
map.put(value,key)
或map.put(value,map.getOrDefault(value,0)+1);
- 获取key对应的value值:
map.get(key)
- 大小:
map.size()
- 是否为空:
map.isEmpty()
- 删除key对应的值:
map.remove(key)
,返回值是value - 是否存在key:
map.containsKey(key)
- 是否存在value:
map.containsValue(value)
- 遍历:
方法一:在for循环中使用entries实现Map的遍历:
/**
* 最常见也是大多数情况下用的最多的,一般在键值对都需要使用
*/
Map <String,String>map = new HashMap<String,String>();
map.put("熊大", "棕色");
map.put("熊二", "黄色");
for(Map.Entry<String, String> entry : map.entrySet()){
String mapKey = entry.getKey();
String mapValue = entry.getValue();
System.out.println(mapKey+":"+mapValue);
}
方法二:在for循环中遍历key或者values,一般适用于只需要map中的key或者value时使用,在性能上比使用entrySet较好;
Map <String,String>map = new HashMap<String,String>();
map.put("熊大", "棕色");
map.put("熊二", "黄色");
//key
for(String key : map.keySet()){
System.out.println(key);
}
//value
for(String value : map.values()){
System.out.println(value);
}
2. set
定义
Set<Integer> set=new HashSet<Integer>();
4、字符串
最后
以上就是暴躁小馒头为你收集整理的[java] 常用数据结构的定义以及相关函数1、数组及列表2、栈和队列3、哈希4、字符串的全部内容,希望文章能够帮你解决[java] 常用数据结构的定义以及相关函数1、数组及列表2、栈和队列3、哈希4、字符串所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复