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]内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复