java中常用基本类API

来源:互联网 发布:网络视听许可证续办 编辑:程序博客网 时间:2024/06/05 04:58

近段时间在leetcode上做题,感觉java中好多现成的数据结构和方法可以极大的减少我们的工作量,就不需要自己去写了,下面我就将这些常用的类以及方法进行简单的介绍。


1.Arrays: Arrays这个类中包含了一个很重要的静态工厂方法,这个方法可以由一个元素列表生成一个list,方法的签名:

    static List<T> asList(T... a) 

这个方法使构造list和构造array一样方便!

static int binarySearch(int[] a, int fromIndex, int toIndex, int key) 

这个方法使用二分搜索法来搜索指定的 int 型数组的范围,以获得指定的值。如果它包含在数组的指定范围内,则返回搜索键的索引;否则返回(-(插入点)-1)。插入点被定义为将键插入数组的那一点:即范围中第一个大于此键的元素索引,例如:

int[] b={1,2,6};System.out.println(Arrays.binarySearch(b, 3));//out:-3  (-2-1)

ps:此方法提供多种重载方法,除基本类型外,还提供

binarySearch(T[] a, T key, Comparator<? super T> c) 

comprartor多采用匿名内部类的形式实现(compare方法)

static boolean equals(Object[] a, Object[] a2) 

此方法可以比较两个数组的元素是否相等,一般元素为基本类型,或者实现了Comparable接口

static int[] copyOf(int[] original, int newLength)  

此方法可以复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。

static <T> void sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c)  

此方法根据指定比较器产生的顺序对指定对象数组的指定范围进行排序。若是基本类型,则不需要指定比较器。

2.Integer: Integer为一个包装类,这个类提供了一系列类型转换的方法。java中整数转string,除了+”“之外,还可以用Integer.toString()方法,而string转int可以使用Integer.parseInt()方法,java中的基本数据类型都是有符号数,正负各一半。java的包装类具有自动的装拆箱功能,所以Integer和int的转化不是问题,直接赋值即可。而对于其他基本类型之间的转换,如double转int,我们一半采用强制转换(int),而对于int转double,由于低精度转高精度,隐式转换!

3.Arraylist: 是我们最常用的list类,我感觉虽然LinkedList的插入和删除较ArrayList快很多(o(1) than o(n)),但是ArrayList根据index来查找某个元素的速度更快一些(o(1) than o(n)),而我认为查找操作在很多时候要比插入删除操作多,关于ArrayList的常用方法:

ArrayList(Collection<? extends E> c) 

构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。相当于复制一样。

 boolean add(E e)  

此方法将指定的元素添加到此列表的尾部。

 boolean addAll(Collection<? extends E> c) 

此方法按照指定 collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的尾部。

 void clear()  

此方法移除此列表中的所有元素。

 boolean contains(Object o) 

如果此列表中包含指定的元素,则返回 true。

 E get(int index)  

此方法返回此列表中指定位置上的元素。

int indexOf(Object o) 

此方法返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。

 int lastIndexOf(Object o)  

此方法返回此列表中最后一次出现的指定元素的索引,或如果此列表不包含索引,则返回 -1。

 E remove(int index)  boolean remove(Object o)  

remove方法可重载,第一个方法移除此列表中指定位置上的元素。并返回此元素;第二个方法移除此列表中首次出现的指定元素(如果存在)。

 E set(int index, E element)  

此方法用指定的元素替代此列表中指定位置上的元素。

int size()  

此方法返回此列表中的元素数。

<T> T[] toArray(T[] a)  

此方法按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型(放进去一个想要类型的一个元素的数组即可)。

List<E> subList(int fromIndex, int toIndex)  

此方法返回一个子列表,从fromIndex(包含)到toIndex(不包含)

4.Stack: Stack也是我们常用的一种数据结构,尤其是在树中,或者需要保存其调用方信息的应用中,stack的主要方法:empty()判断是够为空;peek()返回一个栈顶元素 , 不删除; pop() 返回并删除栈顶元素;push()将以个元素压入栈中

5. Hashtable: Hashtable更是我们常用的一个数据结构,我更喜欢将它称之为反向数组,可以用来保存数组的索引信息(可能有重复元素,值为list<>),hashtable继承的是map接口,其主要的方法如下:clear() 方法清除所有元素 ;containsKey()返回是否包含某个key值;containsValue()返回是否包含某个value值;isEmpty()判断是否为空;put()放入一个键值对,如果键值对存在则覆盖原有value;size()查看大小。

6.TreeMap: 结构简单的理解就是一个有序的hashtable结构。

TreeMap(Map<? extends K,? extends V> m)

构造函数可以接受一个map接口来实现TreeMap,当然也有默认构造函数。

 K ceilingKey(K key)  

此方法返回大于等于给定键的最小键;如果不存在这样的键,则返回 null。

void clear() 

此方法从此映射中移除所有映射关系。

 boolean containsKey(Object key) 

如果此映射包含指定键的映射关系,则返回 true。

 K floorKey(K key) 

返回小于等于给定键的最大键;如果不存在这样的键,则返回 null。

 V get(Object key) 

返回指定键所映射的值,如果对于该键而言,此映射不包含任何映射关系,则返回 null。

 Set<K> keySet() 

返回此映射包含的键的 Set 视图。

 V put(K key, V value) 

将指定值与此映射中的指定键进行关联。

 void putAll(Map<? extends K,? extends V> map) 

将指定映射中的所有映射关系复制到此映射中。

 V remove(Object key) 

如果此 TreeMap 中存在该键的映射关系,则将其删除。

 int size()  

返回此映射中的键-值映射关系数。

7.优先队列: 优先队列本质上是一个最小堆,最小堆的作用可以很方便的找出最小的元素以及第k小的元素,优先队列的方法如下所示:add(E e) ,clear() , contains(Object o) ,peek() ,poll() ,remove(Object o), size() ,toArray(T[] a) ,优先队列中可以放置重复的元素,只要不是key都可以重复,所以hashtable和treemap不允许有重复的元素!很多时候我们将对象的引用放入的pq中,所以这时候我们也需要在pq的构造方法中声明comparator,一般我们采用匿名内部类的方式声明comparator接口

PriorityQueue(Comparator<? super E> comparator) 

一种常用的优先队列构造方法,其中Comparator多用匿名内部类来实现。

8.String: 8.String类更是我们常用的一种结构:String构造方法:可以用bytes[] / char[] / String / StringBuilder / StringBuffer构造,String对象是不可变的,但StringBuilder/StringBuffer是可变的,常用的方法有:charAt(int index) ,concat(String str) ,contains(CharSequence s) :String实现了CharSequence接口,String.format(String format, Object… args) 格式化返回一个字符串,indexOf(char ch) ,isEmpty() ,length() ,matches(String regex) ,replace(char oldChar, char newChar) 返回一个新的String对象,split(String regex) ,substring(int beginIndex, int endIndex) ,toCharArray() 返回为1个数组,toUpperCase() ,String.valueOf()返回对象的字符串表达

0 0
原创粉丝点击