[java]——数据结构基础

前言

java数据结构概述

Java Stack 类

Stack<Integer> st = new Stack<Integer>();
st.push(new Integer(1)); // 把项压入堆栈顶部。
Integer a = st.peek(); // 查看堆栈顶部的对象,但不从堆栈中移除它。
int place = st.search(1); // 从栈顶往下搜索,返回对象在堆栈中的位置,以 1 为基数。
Integer a = st.pop(); // 移除堆栈顶部的对象,并作为此函数的值返回该对象。
boolean is_empty = st.empty(); // 测试堆栈是否为空。

Java Hashtable 类

用到了map一并看

集合框架

在这里插入图片描述

集合的遍历

遍历 ArrayList

//定义
List<String> list = new ArrayList<String>();
list.add("he")
list.add("she")
//1. 强for:
for(String str:list){
	System.out.println(str);
}
//2. 集合转换成数组!
String[] strArray = new String[list.size()];
list.toArray(strArray);
for(int i=0;i<strArray.length;i++){
	System.out.println(strArray[i]);
}
//3. 迭代器
Iterator<String> it = list.iterator();
while(it.hasNext()){
	System.out.println(it.next());
}

ArrayList

需要注意的是:

List<TreeNode>[] dp = new ArrayList<TreeNode>[n+1];

会报错:Generic array creation
这是因为:generic array creation ? - CNife的回答 - 知乎
https://www.zhihu.com/question/393638991/answer/1213747842

简介:

ArrayList继承了AbstractList,并实现了List接口

导包:

import java.util.ArrayList

初始化:

ArrayList<引用类型> name = new ArrayList<>();

添加元素:

ArrayList<String> list = new ArrayList<String>();
list.add("haha,nihaochun");

访问元素:

list.get(0); // index从0开始

修改元素:

list.set(0, "haha.nizhendehaochun"); // set(int index, E element) 

删除元素:

list.remove(0);

计算大小:

int sz = list.size();

迭代:

for(int i = 0;i<list.size();i++){
	SOUT(list.get(i));
}

排序1:

import java.util.Collections;
Collections.sort(list);

排序2(给数组排序):

int[] intArray = list.stream().mapToInt(Integer::valueOf).toArray();
Arrays.sort(intArray)

List< Integer >:转换成int数组:

list.stream().mapToInt(Integer::valueOf).toArray();

其它常见方法(用到再补充):
https://www.runoob.com/java/java-arraylist.html

HashMap

简介:

HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。

导包:

import java.util.HashMap;

初始化:

HashMap<Integer, String> Sites = new HashMap<Integer, String>();

添加元素:

Sites.put(1, "Google");

访问元素1:

String s = Sites.get(3);

访问元素2:

String s = Sites.getOrDefault(4, "Noexits!!")

删除元素:

Sites.remove(4);

清空:

Sites.clear();

计算大小:

Sites.size()

迭代:

//键
for(Integer i : Sites.keySet()){
	...
}
//值
for(String s : Sites.values()){
	...
}
//键-值
for(Integer i : Sites.keySet()){
	String s = Sites.get(i);
}

查看是否包含某个元素

boolean is = Sites.containsKey(xxx);

需要特别注意的是:
如果哈希表中存放的键是int数组
碰到下面的情况,要这么写

memory.containsKey(new int[]{i,M}) //memory.containsKey({i,M})是错误的

HashSet

导包:

import java.util.HashSet;

初始化:

HashSet<E> s = new HashSet<E>();

判断是否是空:

s.isEmpty();

添加元素:

s.add();

判断元素是否存在:

s.contains();

删除元素:

s.remove();

删除所有元素:

s.clear();

计算大小:

s.size();

其他常见方法:
https://www.runoob.com/java/java-hashset.html

LinkedList

简介:
在这里插入图片描述
导包:

import java.util.LinkedList;

初始化:

LinkedList<E> list = new LinkedList<E>();

ArrayList有的,它都会有,下面介绍一些它独有的更加高效的方法:

在头部添加元素

list.addFirst(...);

在尾部添加元素

list.addLast(...);

在头部移除元素

list.removeFirst();

在尾部移除元素

list.removeLast();

获取头部元素

list.getFirst();

获取尾部元素

list.getLast();

下面介绍把它当作队列来使用:
在队列末尾添加元素

list.add();

删除并返回队首元素

list.poll();

一样,在队列末尾添加元素

list.offer();

其它常见方法:
https://www.runoob.com/java/java-linkedlist.html

StringBuffer

简介:

然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类

初始化:

StringBuffer sb = new StringBuffer("lalala");

增加

sb.append("wwww");

返回此序列中数据的字符串表示形式

String ss = sb.toString();

删除一个区间内的字符串

sb.delete(index, index+1);

删除单个字符

sb.deleteCharAt(index); // 得到和上面一样的效果

长度

int length = sb.length();

String

简介:

字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。

初始化

String s = "xxxx";

访问单个字符

char c = s.charAt(index);

长度

int length = s.length();

其它相关

基本类型-引用类型

我们知道ArrayList的初始化如下:

ArrayList<E> list = new ArrayList<>();

E: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。

除此以外,HashMap存放的类型也是引用类型.
所以下面介绍常见的基本类型和它的引用类型:
在这里插入图片描述

引用类型之——Integer

Integer.MIN_VALUE

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值