数据结构与算法学习总结

数据结构

定义

数据结构:是计算机存储、组织数据的方式?又分为逻辑结构和物理结构
逻辑结构:数据结构按照逻辑结构划分为集合、线性结构和非线性结构,线性结构有数组、队列、栈等,非线性结构有树、图等。
物理结构:数据结构按照存储结构划分为顺序存储结构、链式存储结构、索引存储结构、散列存储结构。
数组就是顺序存储结构
链表就是链式存储结构
Java的map就是散列存储结构

Java中常见的数据结构

数组

创建数组:

// 声明一维数组
int[] array1 = new int[3]; //指定数组长度
int[] array2 = {1,2,3,4,5}; //直接给定数组元素
//声明二维数组
int[][] array3 = new int[n][]; //默认值为null
int[][] array4 = {{1,2,3},{4,5,6},{7,8,9},{}};

数组工具Arrays:

//排序,默认升序
Arrays.sort(int[] a)//自定义排序,比如降序
Arrays.sort(arr2, new Comparator<Integer>() {
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });
        
//给数组填充默认值
Arrays.fill(a,1);

//从原数组中指定范围拷贝到新数组
int[] b = Arrays.copyOfRange(a,0,5);

//二分查找某个数,可以指定数组范围
Arrays.binarySearch(a, [0,5,],key);

String

//获取字符串长度
str.length();
//字符串转换为字符数组
str.toCharArray();
//检查字符串是否以字符串A开始和结尾
str.startsWith(A);
str.endsWith(A);
//判断字符串是否包含字符串A
str.contains(A);
//字符串按照A划分
str.split(A);
//从字符串中取出位置i的字符
str.charAt(i);
//字符串大小写转换
str.toUpperCase();
str.toLowCase();
//截取子字符串[a,b)
str.substring(a,b);
//去掉左右空格
str.trim();
//将字符串中B全部替换为C
str.replaceAll(B,C);
//将字符串字符A替换为字符B
str,replace(A,B);

**StringBuilder

StringBuilder sb = new StringBuilder();
//向序列中添加字符、字符串等
sb.append(c);
//设置序列的长度,可以用来把序列置空
sb.setLength(0);

//定义(数据类型为整型)
Stack<Integer> s = new Stack<>();
Deque deque = new LinkedList()
//基本方法
push(item)方法: 可以将item压入栈中。
pop()方法:可以移除栈顶的对象,并将其作为函数的返回值
peek()方法:查看栈顶对象
empty()方法:判断栈是否为空,为空则返回1,否则返回0
search(object object )方法:返回搜索的对象在栈中的位置

队列

//定义队列(数据类型为整型)
Queue<Integer> s = new LinkedList<>();
//基本方法
s.peek();
s.offer(e);
s.poll();

remove()poll():两个方法都是删除队列中的第一个元素。不同的是,当对一个空队列
进行操作时,remove()方法会抛出NoSuchElementException,而poll()会返回一个null值。

element()peek():两个方法都是查询队列的头部元素。与上述不同之处一样,element
方法在处理空队列时会抛出NoSuchElementException,而peek方法会返回null

双端队列

//创建双端队列
Deque deque = new LinkedList()
//队列头元素的查询、插入、删除
deque.peekFirst();
deque.offerFirst(e);
deque.pollFirst();

//队列尾插入查询、插入、删除
deque.peekLast();
deque.offerLast(e);
deque.pollLast();


算法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值