当前位置:   article > 正文

LeetCode必备:Java数据结构的常用方法_leecode常见算法 java

leecode常见算法 java

基础数据类型和字符串:

基础操作符 比如说+ == !=之类的 只能用于基础数据 类型和字符串能用。
而且尤其注意相比较两个对象的值只能用equals()
字符串的相关方法:

String

  • var.length(): int
  • var.indexOf(“a”):int
  • var.charAt(int index): char
  • var.substring(int beginIndex): String
  • var.substring(int beginIndex, int endIndex): String //包括起始索引 不包括终止索引
  • var.toCharArray(): char[]
  • var.replace(char/String, char/String):String
  • var.replaceAll()
  • var.toLowerCase():String
  • var.startsWith(String prefix): boolean;
  • var.startsWith(String prefix, int start_index): boolean;
  • var.trim():String //去掉字符两边的空白
  • var.split(String regex, int limit): String[]//根据给定的正则表达式来拆分字符串,正则表达式所包含的字符有 . $ | *等等, 多个分隔符需要加|作为连字符。将正则表达符号转成普通字符需要用\。关于正则表达式的用法 详见其他文章。
  • var1.equals(String var2):bool //不能直接用== 只有基础数据类型才能这样比较
  • var1.compareTo(String var2):int //返回两字符串第一个不相同的字母之间的ascii码差值,如果完全相同 就返回0.这一方法同样适用于字符
  • char与String的转换: String转化为char: var.charAt(index):char; 或者var.toCharArray():char[]; 而char或者char[]转化为String:String.valueOf(char c):String / String.valueOf(char[] chars): String; Character.toString(char c):String;

Array的工具类:Arrays

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

  • Arrays.binarySearch(int[] a, key):int;找到key在a中的索引并返回 相当于indexOf() 当然也不一定只是int数组 如果没有 返回(-(insertion point) – 1)
  • Arrays.equals(int[] a, int[] b):bool;
  • Arrays.fill(int[] a, int b):void;将b的值填充到a中
  • Arrays.sort(int[] a):void;a将会被升序排列
  • Arrays.sort(int[] a, int startIndex, int endIndex):void;
  • Arrays.sort(int[] a, int startIndex, int endIndex, Comparator cmp);//如果想要按照自定义的方式去排序 具体操作见https://blog.csdn.net/eff666/article/details/63692840
  • Arrays.toString(char[] c):String;把字符数组当对象传入,得到字符数组的字符串表示 or we can just use: new String(char[] c);
  • Arrays.asList(Array a):List;
  • Arrays.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

基础数据类型的包装类:

注意 这种包装类的方法调用时ClassName.method()

String

string的包装类
String.valueOf(Object obj): covert any obj to String

Integer

int的包装类

  • Integer.parseInt(String s): int //String-int转化器
  • Integer.valueOf(int i): Integer //包装类的转换 Integer转换器
  • Integer.valueOf(String s): Integer//注意 包装类是可以使用对象方法的 但是基本类型比如int就不行
  • Integer.toString(int b): String
  • Integer.toBinaryString(int b): String. transfer a decimal integer to binary string. the string will start with a 1

Character

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

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

StringBuilder

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

BigInteger

this class is used for mathmatical operation which involoves very big integer calculations
it has many calculation method.

Long

  • Long.parseLong(String str): Long;
  • Long.toString(long b): String;
  • Long.valueOf(long b): Long

常见的各种类:

ArrayList

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

  • var.add(obj o);向尾部添加元素
  • var.add(int index,obj o);向指定index添加元素
  • var.clear(); // pay attention to pass by value and pass by reference in Java
  • var.contains(obj o):boolean; //I didn’t really expect that we can using contains() in arraylist other than hashset
  • 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: use collection to sort arraylist

HashMap

  • //构造函数
  • HashMap();
  • HashMap(Map m);给定Map对象 利用它老初始化HashMap;
  • HashMap(int capacity);
  • ///构造函数结束
  • var.containsKey(obj key):boolean
  • var.containsValue(obj value):boolean
  • var.get(key):value
  • var.put(key, value):void
  • var.getOrDefault(obj key, obj defaultValue):obj value//exists value or default value.//注意 这个方法并没有往hashmap中添加了新的键
  • var.computeIfAbsent(key, reMappingFunction): remapping function can be a lamda expression like: k -> new LinkedList<>() or k -> 200*100
  • var.putIfAbsent(key, value)
  • the difference between previous three methods: https://stackoverflow.com/questions/48183999/what-is-the-difference-between-putifabsent-and-computeifabsent-in-java-8-map
  • var.isEmpty():boolean;
  • var.keySet():set;return set contains all keys,这个set可以用于直接for(obj key: var.keySet())式遍历
  • var.values():Collection, and also can be used in for loop iterator
  • var.remove(obj key): obj value
  • var.remove(obj key, obj value):boolean//delete k-v pair
  • var.size():int
  • var.replace(obj key, obj value):void//if key exists, replace() is the same as put(), but when key did not exist, replace will do nothing
  • var.putAll(hash_map):void; 如果var是hashmap类型 就是深拷贝,如果var是map类型的 就是浅拷贝
  • var.clone() //应该是浅拷贝 但是没有得到证明
  • HashMap<Integer, Integer> copy = exist_hash_map; //是浅拷贝 大多数情况下我们需要的是深拷贝
  • Map.Entry<Integer, Integer> entry : var.entrySet(); // transfer hashmap into set view in order to iterate it. example:
  • for(Map.Entry<Integer, Integer> entry: indegree.entrySet()) { if(entry.getValue() == 0) queue.offer(entry.getKey()); }

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

  • var.size():int
  • var.isEmpty():bool
  • var.contains(key):bool //hashset中的key就是值
  • var.add(key):bool;
  • var.remove(key):boolean
  • var.clear():void
  • use iterator OR for each to iterate HashSet:
  • Iterator<String> itr = setOfStocks.iterator();
    -while(itr.hasNext()){ System.out.println(itr.next()); }Read more: https://javarevisited.blogspot.com/2016/01/3-ways-to-loop-over-set-or-hashset-in-java.html#ixzz6Kix4OLLq

Stack

  • var.empty(); boolean;
  • var.peek(): obj;
  • var.pop(): obj;
  • var.push():obj;
  • var.search(obj element): index

Priority Queue

  • var.add()//插入元素
  • var.remove(Object o);//删除某个元素
  • var.poll()//删除头部元素
  • var.peek()//查看头部元素
  • var.contains(Object o): boolean;
  • var.size(): int;
  • var.toArray():Array
  • var.isEmpty();
  • var.comparator(): Comparator;

LinkedList

this data structure can do anything using given method, and you can poll from back or head.

  • 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

  • three kinds of iterators: Enumeration, Iterator, ListIterator
  • Enumeration e = v.elements(); //where v is legacy classes(Vector, HashTable).
  • e.hasMoreElements(): boolean; //if no more, then throws NoSuchElementExeception
  • e.nextElement(): Object;
  • 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);

接口相关的方法:

Deque(interface) extends queue

  • add()/addLast() :tail
  • push()/addFirst()
  • pop()/removeFirst():head
  • removeLast()
  • offer()/offerLast():tail
  • offerFirst()
  • poll()/pollFirst():head
  • pollLast()
  • peek()/peekFirst():head
  • peekLast()

Queue(Interface)

  • var.add()
  • var.remove()
  • var.element(): //就像peek一样 但是在queue为空的时候 会抛出NoSuchElementExeception异
  • var.offer();
  • var.poll();
  • var.peek();
  • var.size();
  • and since queue is a subtype of collections class, it inherits all the methods of it namely: isEmpty(), contains()…

List(Interface)

  • initialize:
  • List a = new ArrayList();
  • List b = new LinkedList();
  • List c = new Vector();
  • List d = new Stack();
  • var.add(int index, Object O): void;
  • var.remove(int index): Object;
  • var.get(int index): Object;
  • var.set(int index, Object new);
  • var.indexOf(Object O);
  • var.lastIndexOf(Object O);
  • var.ListIterator()???
  • vat.iterator()
  • var.subList(int fromIndex, int toIndex): List;

Other important Classes:

Collections

  • Collections.sort(); //arraylist can be sorted in this way
  • Collection.max();
  • Collection.binarySearch(list, target);

Random

  • var.nextInt(int upper_bound); return random 0~upperBound-1
  • var.nextDouble(double upperBound);

System.out.println()

  • print an arraylist: System.out.println(list.toString());
  • print an array: System.out.println(Arrays.toString(arr)); //many data structure have toString() method, however, due to the the sepcial of array, we use tool class of Array which is Arrays to implement those methods. and for other many data structures, the we can to Collections to print them, or there are defined toString method in its own class.

Math

  • Math.pow(): double. pay attention, it returns double, so be sure to convert type

Iterators

  • three kinds of iterators: Enumeration, Iterator, ListIterator
  • Enumeration e = v.elements(); //where v is legacy classes(Vector, HashTable).
  • e.hasMoreElements(): boolean; //if no more, then throws NoSuchElementExeception
  • e.nextElement(): Object;
  • 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);
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/935607
推荐阅读
相关标签
  

闽ICP备14008679号