Java中各种高级数据结构以及对应方法

14 篇文章 0 订阅

辛苦整理,各位看官一定要好好学习

一、栈与队列

栈 Stack 接口Vector的子类, Vector为List的实现类, Vector与ArrayList相似,前者为线程安全,后者线程不安全,底层通过数组来实现。

Stack常用的方法有:

peek() //只取栈顶元素,不删除
pop() //弹出栈顶元素,并删除
push() //压元素入栈
isEmpty() //判断栈是否为空
size() //栈的长度

队列分为单向队列Queue和双向队列Deque,Deque为Queue的子接口,两个接口的实现类为LinkedList 底层通过链表来实现队列。

Queue的常用方法:

1.获取并移除

poll()   //获取并移除此队列的头,如果此队列为空,则返回 null
remove()  //获取并移除此队列的头,如果此队列为空,则抛出NoSuchElementException异常

2.获取但不移除

peek()  //获取队列的头但不移除此队列的头。如果此队列为空,则返回 null
element()  //获取队列的头但不移除此队列的头。如果此队列为空,则将抛出NoSuchElementException异常

3.添加元素的方法

offer()  //将指定的元素插入此队列(如果立即可行且不会违反容量限制),插入成功返回 true;否则返回 false。当使用有容量限制的队列时,offer方法通常要优于 add方法——add方法可能无法插入元素,而只是抛出一个 IllegalStateException异常
add()  //将指定的元素插入此队列

Deque的常用方法:

1.获取并移除

removeFirst() //获取头部元素。
removeLast()//获取并移除移除双端队列最后一个元素。
pollFirst() //获取头部元素。
pollLast() //获取并移除双端队列最后一个元素。
size() //返回双端队列元素数。
isEmpty()//判断队列是否为空,为空返回true。

2.获取但不移除

peekFirst() //获取头部元素,但不移除第一个元素。
peekLast()//获取但不移除双端队列最后一个元素。

3.添加元素的方法

addLast(E e) //在队列尾部插入元素.
offerFirst() //将指定元素插入队列开头。
offerLast(E e) //在队列尾部插入元素。
size()//返回双端队列元素数。
isEmpty()//判断队列是否为空,为空返回true。

二、HashMap

HashMap存储的为键值对的形式,其常用的方法有:

put(Object key,Object value)  //在此映射中关联指定的Key-value
putAll(Collection c)  //在此映射中将指定的映射关系添加到被操作的映射中
get(Object key)  //根据key获取指定的value
containsKey(Object key)	 //检测该映射中是否存在指定key的映射,有则返回true;没有则返回false
containsValue(Object value)	  //检测该映射中是否存在指定value的映射,有则返回true;没有则返回false
remove(Object key)	//根据key的值删除指定的映射关系
values()	//返回值的集合
isEmpty()   //测试映射是否为空
entrySet()  //将此映射所包含的映射关系返回到Set中,通过Iterator迭代器迭代输出,或者用foreach输出

三、HashSet

注意由于hashset的底层实现是基于hashmap的 因此很多方法都很相像


size():int //大小或者长度
isEmpty():bool
contains(key):bool //hashset中的key就是值
add(key):bool;
remove(key):boolean
clear():void

//迭代器遍历
Iterator<String> it = setOfStocks.iterator();
while(it.hasNext()){ 
	System.out.println(it.next()); 
}

四、String

String的方法比较多

char charAt(int index) //返回指定索引处的 char 值。
int compareTo(Object o)  //把这个字符串和另一个对象比较。
int compareTo(String anotherString) //按字典顺序比较两个字符串。
String concat(String str) //将指定字符串连接到此字符串的结尾。
boolean contentEquals(StringBuffer sb) //当且仅当字符串与指定的StringBuffer有相同顺序的字符时候返回真。
static String copyValueOf(char[] data)  //返回指定数组中表示该字符序列的 String。
static String copyValueOf(char[] data, int offset, int count) //返回指定数组中表示该字符序列的 String。
boolean endsWith(String suffix) //测试此字符串是否以指定的后缀结束。
boolean equals(Object anObject) //将此字符串与指定的对象比较。
boolean equalsIgnoreCase(String anotherString) //将此 String 与另一个 String 比较,不考虑大小写。
byte[] getBytes() //使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
byte[] getBytes(String charsetName) //使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) //将字符从此字符串复制到目标字符数组。
int hashCode() //返回此字符串的哈希码。
int indexOf(int ch) //返回指定字符在此字符串中第一次出现处的索引。
int indexOf(int ch, int fromIndex) //返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
int indexOf(String str) //返回指定子字符串在此字符串中第一次出现处的索引。
int indexOf(String str, int fromIndex)//返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
String intern()//返回字符串对象的规范化表示形式。
int lastIndexOf(int ch)//返回指定字符在此字符串中最后一次出现处的索引。
int lastIndexOf(int ch, int fromIndex)//返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。
int lastIndexOf(String str)//返回指定子字符串在此字符串中最右边出现处的索引。
int lastIndexOf(String str, int fromIndex)//返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。
int length()//返回此字符串的长度。
boolean matches(String regex)//告知此字符串是否匹配给定的正则表达式。
boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)//测试两个字符串区域是否相等。
boolean regionMatches(int toffset, String other, int ooffset, int len)//测试两个字符串区域是否相等。
String replace(char oldChar, char newChar)//返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
String replaceAll(String regex, String replacement)//使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
String replaceFirst(String regex, String replacement)//使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
String[] split(String regex)//根据给定正则表达式的匹配拆分此字符串。
String[] split(String regex, int limit)//根据匹配给定的正则表达式来拆分此字符串。
boolean startsWith(String prefix)//测试此字符串是否以指定的前缀开始。
boolean startsWith(String prefix, int toffset)//测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
CharSequence subSequence(int beginIndex, int endIndex)//返回一个新的字符序列,它是此序列的一个子序列。
String substring(int beginIndex)//返回一个新的字符串,它是此字符串的一个子字符串。
String substring(int beginIndex, int endIndex)//返回一个新字符串,它是此字符串的一个子字符串。
char[] toCharArray()//将此字符串转换为一个新的字符数组。
String toLowerCase()//使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
String toLowerCase(Locale locale)//使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。
String toString()//返回此对象本身(它已经是一个字符串!)。
String toUpperCase()//使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
String toUpperCase(Locale locale)//使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。
String trim()//返回字符串的副本,忽略前导空白和尾部空白。
static String valueOf(primitive data type x)//返回给定data type类型x参数的字符串表示形式。
contains(CharSequence chars)//判断是否包含指定的字符系列。
isEmpty()//判断字符串是否为空。

五、StringBuilder

append(String s): void 
append(int i): void;
delete(int start, int end): void;
deleteCharAt(int index): void
replace(int start, int end, String str);
insert(int index, String s);//上面是与String方法不同的 下面是与String 方法相同的:
capacity();
charAt(int index): char;
indexOf(String str): int
length();
substring(int start);
toString():String
setLength(int newLength): void;

六、Character

其传入的参数应该是Character,但是可以将char类型自动转化为Character类型的

isLetter(char a):boolean;
isDigit(char a):boolean; //判断是否是一个数字字符
isWhitespace(char a):boolean;
isSpaceChar(char ch)
isTitleCase(int codePoint)
isUpperCase(char a)
isLowerCase(char a)
toUpperCase(char a):Character; 
toLowerCase(char a)
toString(char a):String //返回字符的字符串形式 将单个字符转化为String类型
isLetterOrDigit(char ch): boolean

七、Array(Arrays)

Array只是能通过索引访问其中的元素 不能做任何排序之类的操作 但是Arrays类提供了以下方法

binarySearch(int[] a, key):int;  //找到key在a中的索引并返回 相当于indexOf() 当然也不一定只是int数组 如果没有 返回(-(insertion point) – 1)
equals(int[] a, int[] b):bool;
fill(int[] a, int b):void;//将b的值填充到a中
sort(int[] a):void;//a将会被升序排列
sort(int[] a, int startIndex, int endIndex):void;
sort(int[] a, int startIndex, int endIndex, Comparator cmp);//如果想要按照自定义的方式去排序 具体操作见https://blog.csdn.net/eff666/article/details/63692840
toString(char[] c):String;//把字符数组当对象传入,得到字符数组的字符串表示 or we can just use: new String(char[] c);
asList(Array a):List;
copyOfRange(nums1, 0, k); Array
//Arrays没有向array中一个一个添加不同元素的方法 只能手动nums[0] = 2; nums[1]=3;
System.out.println(Arrays.toString(arr)) //print 1D array
System.out.println(Arrays.deepToString(arr)) //print 2D array

八、ArrayList

List  var = new ArrayList();有以下方法

var.add(obj o);//向尾部添加元素
var.add(int index,obj o);//向指定index添加元素
var.clear(); 
var.contains(obj o):boolean; 
var.equals(obj o):boolean;
var.get(int index):obj o;
var.indexOf(obj o):int index;
var.lastIndexOf(obj o):int index;
var.isEmpty():boolean;
var.remove(int index); //注意 remove掉此元素之后 其后边所有元素都向前移动
var.remove(obj o);//移除列表中出现的首个指定元素 如果这个元素是个int 那么是如何知道这代表元素还是代表Index呢?https://www.geeksforgeeks.org/remove-element-arraylist-java/ 用 new Integer(int i)来生成object
var.set(int index, obj o);//用指定元素替换列表中指定位置的元素 只能在index存在的时候用于替换 否则就要用add方法
var.size():int
var.subList(int startIndex, int endIndex);
var.toArray():Object[] //List与Array的转化 Arrays.asList() . this method will return Object[] which is not the same as Integer[]
Collections.sort(arrayList): void: 

九、List(Interface)

List a = new ArrayList();
List b = new LinkedList();
List c = new Vector();
List d = new Stack();

add(int index, Object O): void;
remove(int index): Object;
get(int index): Object;
set(int index, Object new);
indexOf(Object O);
lastIndexOf(Object O);
iterator()
subList(int fromIndex, int toIndex): List;

十、LinkedList

List<E> var = new LinkedList<>();

var.add(int index, E element); //相当于Insert
var.add(E e);var.addLast(E e): //尾部添加元素
var.addFirst(E e): //头部添加元素
var.clear();
var.clone();
var.contains();
var.element(): //peek the head of linked list
var.get(int index)
var.getFirst()
var.getLast();
var.indexOf(Object o) ;
var.offer(E e): //add element to tail of linkedlist;
var.peek(): //peek the head of linkedlist;
var.peekFirst(): //peek the head of linkedlist;
var.peekLast(): //peek the tail of linkedlist;;
var.poll(): //remove the head of linkedlist;
var.pollFirst();
var.pop()
var.push();
var.remove();//remove the head of linkedlist;
var.removeFirst();//remove the head of linkedlist;你没看错 remove跟removeFirst()
var.set(int index, E element);
var.size();
var.toArray();
var.isEmpty();

十一、Iterators

Iterator itr = c.iterator();  //c can be any Collection Object;
itr.hasNext():bool;
itr.next():Object;
itr.remove(): void;
ListIterator ilr = l.listIterator(); // l is any List Object
l.hasNext(): bool
l.next(): Object;
l.nextIndex(): int;
l.hasPrevious(): boolean;
l.previous(): Object;
l.remove(): void
l.set(Object obj): void;
l.add(Object obj);
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梧杵

还是学生,生活太难

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值