文章目录
前言
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