JAVA算法中各类数据结构的初始化及常用函数(自用)

1.数组

初始化方法:
int[] arr = new int[size];

或者:

int[] arr = {100,200};

int[] arr = new int[]{100,200};
常用函数:
//数组长度
arr.length  

//排序
Arrays.sort(arr)

//转list,可增删改
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(arr)) ;
或者
Stream.of(arr).collect(Collectors.toList());


2.链表

链表的定义:
  public class ListNode {
      int val;
      ListNode next;
      ListNode() {}
      ListNode(int val) { this.val = val; }
      ListNode(int val, ListNode next) { this.val = val; this.next = next; }
  }
链表初始化:
ListNode newHead = new ListNode(-1);

3.哈希表

3.1 set

初始化:
Set<Integer> set=new HashSet<>();
常用函数:
// 添加元素
set.add()
// 判断是否拥有
set.contains()
// 删除元素
set.remove()
// 迭代
for (Integer i : set) {
    System.out.println(i);
}
// 大小
set.size()

3.2 map

初始化:
Map<Integer,Integer> map=new HashMap<>();
常用函数:
// 添加元素
map.put(  ,  );
// 根据key获取value
map.get(key)
// 判断是否拥有key值
map.containsKey(key)
// 判断是否拥有value值
map.containsValue(value)
// 删除某元素
map.remove(key)
// map的大小
map.size()
// 获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值。
map.getOrDefault(Object key, V defaultValue)
// map的迭代
for (Integer i : map.keySet()) {
    System.out.println("key: " + i + " value: " + Sites.get(i));
}
// 替换旧值,old value省略的话,返回的是旧值;
// 不省略的话,返回的是true
map.replace(key,old value,new value)

4. 字符串

String 初始化
// 创建字符串最简单的方式如下:
String str = "Runoob";

// 用构造函数创建字符串:
String str2=new String("Runoob");
常用函数:
// 字符串的长度
str.length()
// 返回某位置字符
char result = str.charAt(i);
// 分割字符串
String[] s = str.split("-");
// String 转array
char[] c = str.toCharArray();
// 判断字符串中是否包含指定的字符或字符串。返回true或false。
str.contains("Run")
// 判断是否为空
str.isEmpty()
StringUtils.isBlank(string)

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
目前常用StringBuilder .

初始化:
// 它是一个可变对象,可以预分配缓冲区
 StringBuilder sb = new StringBuilder(10);
常用函数
// 添加元素
sb.append("Runoob..");

// 在某位置添加元素
sb.insert(8, "Java");

// 删除两个位置之间的元素
sb.delete(5,8);

// 翻转
sb.reverse();

// 返回某位置元素
sb.charAt(int index)

// 修改某位置元素
sb.setCharAt(int index, 'x');

5.栈与队列

栈:初始化
Stack<Integer> st = new Stack<Integer>();
常用函数:
// 把项压入堆栈顶部。
st.push(1);
// 移除堆栈顶部的对象,并作为此函数的值返回该对象。
st.pop();
// 查看堆栈顶部的对象,但不从堆栈中移除它。
st.peek();
// 测试堆栈是否为空
st.isEmpty()
队列:初始化
Queue<String> queue = new LinkedList<String>();
常用函数
// 添加元素
queue.offer("a");
// 返回第一个元素,并在队列中删除
queue.poll()
// 返回第一个元素 
queue.peek()
// 判断是否为空
queue.isEmpty()

双向队列: 初始化

Deque<Integer> q = new LinkedList<>();

常用方法:

addFirst() - 在双端队列的开头添加指定的元素。如果双端队列已满,则引发异常。

addLast() - 在双端队列的末尾添加指定的元素。如果双端队列已满,则引发异常。

offerFirst() - 在双端队列的开头添加指定的元素。如果双端队列已满,则返回falseofferLast() - 在双端队列的末尾添加指定的元素。如果双端队列已满,则返回falsegetFirst() - 返回双端队列的第一个元素。如果双端队列为空,则引发异常。

getLast() - 返回双端队列的最后一个元素。如果双端队列为空,则引发异常。

peekFirst() - 返回双端队列的第一个元素。如果双端队列为空,则返回nullpeekLast() - 返回双端队列的最后一个元素。如果双端队列为空,则返回nullremoveFirst() - 返回并删除双端队列的第一个元素。如果双端队列为空,则引发异常。

removeLast() - 返回并删除双端队列的最后一个元素。如果双端队列为空,则引发异常。

pollFirst() - 返回并删除双端队列的第一个元素。如果双端队列为空,则返回nullpollLast() - 返回并删除双端队列的最后一个元素。如果双端队列为空,则返回null

优先队列:初始化

优先级队列的头是队列中最小的元素。元素将按升序从队列中移除。
PriorityQueue<Integer> numbers = new PriorityQueue<>();

或者

PriorityQueue<Integer> numbers = new PriorityQueue<>((a,b)->b-a);

常用方法

add() - 将指定的元素插入队列。如果队列已满,则会引发异常。

offer() - 将指定的元素插入队列。如果队列已满,则返回falsepeek() - 查看队列头元素

remove() - 从队列中删除指定的元素

poll() - 返回并删除队列的开头

//使用iterator()方法遍历
Iterator<Integer> iterate = numbers.iterator();
 while(iterate.hasNext()) {
     System.out.print(iterate.next());
     System.out.print(", ");
 }


contains(element)	在优先级队列中搜索指定的元素。如果找到该元素,则返回true,否则返回falsesize()	返回优先级队列的长度。
toArray()	将优先级队列转换为数组,并返回它。

6. ArrayList

初始化:
ArrayList<String> list =new ArrayList<>();
list.add("a");

List<String> list = Lists.newArrayList("a", "b", "c");

List<String> list = Stream.of("a", "b", "c").collect(Collectors.toList());
常用函数:
// 获取值
list.get(i)
// 修改值
list.set(i, nums);
// 删除第四个元素
list.remove(3); 
// 排序
Collections.sort(list);  // 字母排序
// 翻转
Collections.reverse(list);  // 字母排序
// 转数组
list.toArray()
// 判断是否存在
list.contains("a")
// 判断空
list.isEmpty()
CollectionUtils.isEmpty(list)
  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值