Java常见API整理

本文转载于:

https://cloud.tencent.com/developer/article/1347277

一、JAVA常用API

java.lang.Math

提供sin, cos, tan, exp, log, log10 等类方法,PI和E等类字段

java.lang.String(StringBuilder线程不安全,StringBuffer线程安全)

char charAt(int index)

返回给定位置的代码单元

boolean equals(Object other)boolean equalsIngoreCase(String other)

如果字符串与other相等,返回true忽略大小写

int length()

返回字符串的长度

String substring(int beginIndex)String substring(int beginIndex, int endIndex)

返回一个新字符串,包含原始字符串从beginIndex到串尾或到endIndex-1的所有代码单元

String toLowerCase()String toUpperCase()

返回小写字符串返回大写字符串

int indexOf(String str[, int fromIndex])int lastIndexOF(String str[, int fromIndex])

返回第一个/最后一个子串的位置,从起始位置或者fromIndex开始

java.util.Scanner

Scanner(InputStream in)Scanner(File f)Scanner(String data)

用给定的输入流创建一个Scanner对象例子:Scanner in = new Scanner(System.in)

String nextLine()

读取输入的下一行内容

String next()

读取输入的下一个单词(以空格作为间隔)

int nextInt()double nextDouble()

读取并转换下一个表示整数或浮点数的字符序列

for each循环 for(variable : collection) statement

collection这一集合表达式必须是一个数组或者是一个实现了Iterable接口的类对象

java.util.Arrays

static String toString(type[] a)

返回包含a中数据元素的字符串

static void sort(type[] a)

采用优化的快速排序算法对数组进行排序

static void binarySearch(type[] a, type v)

使用二分搜索算法查找值v

static Boolean equals(type[] a, type[] b)

如果两个数字相同,返回true

数组名.length

数组长度

java.util.Radom

Random()

构建一个新的随机数生成器

int nextInt(int n)

返回一个 0 ~ n-1之间的随机数

java.lang.Object

String toString()

返回描述该对象值的字符串。在自定义类中应覆盖这个方法

boolean equals(Object otherObject)

比较两个对象是否相等。在自定义类中应覆盖这个方法

Class getClass()int hashCode()

返回包含对象信息的类对象返回对象的散列码

static wait()static notify()static notifyAll()

java.lang.Class

String getName()

返回这个类的名字

static Class forName(String className)

返回描述类名为className的Class对象

Object newInstance()

返回这个类的一个新实例

Field[] getFields()Field[] getDeclareFields()

getFields()返回一个包含Field对象的数组,这些对象记录了这个类或其超类的公有域getDeclareFields()返回的Field对象记录了这个类的全部域

Method[] getMethods()Method[] getDeclareMethods()

getMethods()返回一个包含Method对象的数组,这些对象记录了这个类或其超类的公用方法getDeclareMethods()返回的Field对象记录了这个类的全部方法

Constructor[] getConstructors()Constructor[] getDeclareConstructors()

getConstructors()返回一个包含Constructor对象的数组,这些对象记录了这个类的公有构造器getDeclareConstructors()返回的Constructor对象记录了这个类的全部构造器

断言

assert 条件;

assert 条件:表达式;

二、JAVA集合框架

Java集合类库将接口和实现分离。当程序使用集合时,一旦构建了集合就不需要知道究竟使用了哪种实现。因此,只有在构建集合对象时,使用具体的类才有意义。可以使用接口类型存放集合的引用。利用这种方法,一旦改变想法,可以轻松使用另外一种不同的实现,只需在对象创建处修改即可。

java.util.Collection<E>

Iterator<E> iterator()

返回一个用于访问集合中每个元素的迭代器

int size()

返回当前存储在集合中的元素个数

boolean isEmpty()

如果集合中没有元素,返回true

boolean contains(Object obj)boolean containAll(Collection<? extend E> other)

如果集合中包含相等对象,返回true

boolean add(Object element)boolean addAll(Collection<? extend E> other)

将一个元素添加到集合中,集合改变返回true

boolean remove(Object element)boolean removeAll(Collection<?> other)

删除相等元素,成功删除返回true

java.util.Iterator<E>

boolean hasNext()

如果存在可访问的元素,返回true

E next()

返回将要访问的下一个对象

void remove()

删除上次访问的元素

Java库中具体集合

ArrayList

一种可以动态增长和缩减的索引序列

LinkedList

一种可以在任何位置进行高效插入和删除操作的有序序列

ArrayDeque

一种用循环数组实现的双端队列

HashSet

一种没有重复元素的无序集合

TreeSet

一种有序集

EnumSet

一种包含枚举类型值的集合

LinkedHashSet

一种可以记住元素插入次序的集

PriorityQueue

一种允许高效删除最小元素的集合

HashMap

一种存储键/值关联的数据结构

TreeMap

一种键值有序排列的映射表

EnumMap

一种键值属于枚举类型的映射表

LinkedHashMap

一种可以记住键/值项添加次序的映射表

WeakHashMap

一种其值无用武之地后可以被垃圾回收期回收的映射表

IdentityHashMap

一种用==而不是用equals比较键值的映射表

1、List

List接口扩展自Collection,它可以定义一个允许重复的有序集合,从List接口中的方法来看,List接口主要是增加了面向位置的操作,允许在指定位置上操作元素,同时增加了一个能够双向遍历线性表的新列表迭代器ListIterator。List接口有动态数组(ArrayList类)和双端链表(LinkedList类)两种实现方式。

java.util.List<E>

ListIterator<E> listIterator()ListIterator<E> listIterator(int index)

返回一个列表迭代器迭代器第一次调用next返回给定位置元素

void add(int i, E element)void addAll(int i, Colletion<? extend E> elements)

向集合指定位置添加元素

E remove(int i)

删除给定位置元素并返回

E get(int i)

获得给定位置元素并返回

E set(int i, E element)

设置给定位置元素并返回原来的元素

int indexOf(Object element)int lastIndexOf(Object element)

返回与指定元素相等元素在列表中第一次出现的位置返回与指定元素相等元素在列表中最后一次出现的位置

java.util.ListIterator<E>

void add(E Element)

在当前位置添加一个元素

void set(E Element)

用新元素代替next或previous上次访问的元素

boolean havaPrevious()

反向迭代列表时是否还有可供访问的值

E previous()

返回前一个对象

int nextIndex()

返回下一次调用next时返回的元素索引

int previousIndex()

返回下一次调用previous时返回的元素索引

java.util.ArrayList<E>

ArrayList<E>()

构造一个空数组列表

boolean add(E obj)

在数组列表尾端添加一个元素,永远返回true

int size()

返回存储在数组中的当前元素数量

void set(int index, E obj)

设置数组列表指定位置的值

E get(int index)

获的指定位置的元素值

void add(int index, E obj)

向后移动元素,插入元素

E remove(int index)

删除一个元素,并将后面元素前移

java.util.LinkedList<E>

LinkedList()LinkedList(Colletion<? extend E> elements)

构造一个链表

void addFirst(E element)void addLast(E element)

添加元素到表头或表尾

E getFirst()E getLast()

返回表头或表尾的元素

E removeFirst()E removeLast()

删除表头或表尾的元素并返回

2、Set

Set接口扩展自Collection,它与List的不同之处在于,规定Set的实例不包含重复的元素。在一个规则集内,一定不存在两个相等的元素。AbstractSet是一个实现Set接口的抽象类,Set接口有三个具体实现类,分别是散列集HashSet、链式散列集LinkedHashSet和树形集TreeSet。

java.util.HashSet<E>

HashSet()HashSet(Colletion<? extend E> elements)HashSet(int initialCapacity)

构造散列表

java.util.LinkedHashSet<E>

LinkedHashSet是用一个链表实现来扩展HashSet类,它支持对规则集内的元素排序。HashSet中的元素是没有被排序的,而LinkedHashSet中的元素可以按照它们插入规则集的顺序提取。

java.util.TreeSet<E> TreeSet扩展自AbstractSet,并实现了NavigableSet,AbstractSet扩展自AbstractCollection,树形集是一个有序的Set,其底层是一颗树,用红黑树实现,这样就能从Set里面提取一个有序序列了。在实例化TreeSet时,我们可以给TreeSet指定一个比较器Comparator来指定树形集中的元素顺序。树形集中提供了很多便捷的方法。

3、队列

java.util.Queue<E>(接口)

boolean add(E element)boolean offer(E element)

如果队列没有满,将元素添加到队列尾部

E remove()E poll()

如果队列不为空,删除并返回这个队列头部元素

E element()E peek()

如果队列不为空,返回这个队列头部元素

java.util.Deque<E>

接口Deque,是一个扩展自Queue的双端队列,它支持在两端插入和删除元素,Deque接口由ArrayDeque和LinkedList这两个类实现,所以通常我们可以使用LinkedList来创建一个队列。PriorityQueue类实现了一个优先队列,优先队列中元素被赋予优先级,拥有高优先级的先被删除。

java.util.ProrityQueue<E>

优先级队列中的元素可以按任意顺序插入,却总是按照排序的顺序进行检索。优先级队列由堆实现。堆是一个可以自我调整的二叉树,对树执行添加和删除操作,可以让最小元素移动到根(最小堆),而不必花费时间对元素进行排序

4、Map接口

Map,图,是一种存储键值对映射的容器类,在Map中键可以是任意类型的对象,但不能有重复的键,每个键都对应一个值,真正存储在图中的是键值构成的条目。

java.util.Map<K,V>

V get(Object key)

获得与键对应的值

V put(K key, V value)V putAll(Map<? extends K, ? extends V> entries)

将键与对应的值关系插入到映射中

boolean containKey(Object key)boolean containValue(Object value)

查询

java.util.HashMap<K,V> HashMap是基于哈希表的Map接口的非同步实现,继承自AbstractMap,AbstractMap是部分实现Map接口的抽象类。在之前的版本中,HashMap采用数组+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当链表中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用数组+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。

java.util.LinkedHashMap<K,V>

LinkedHashMap继承自HashMap,它主要是用链表实现来扩展HashMap类,HashMap中条目是没有顺序的,但是在LinkedHashMap中元素既可以按照它们插入图的顺序排序,也可以按它们最后一次被访问的顺序排序。

java.util.TreeHashMap<K,V>

TreeMap基于红黑树数据结构的实现,键值可以使用Comparable或Comparator接口来排序。TreeMap继承自AbstractMap,同时实现了接口NavigableMap,而接口NavigableMap则继承自SortedMap。SortedMap是Map的子接口,使用它可以确保图中的条目是排好序的。在实际使用中,如果更新图时不需要保持图中元素的顺序,就使用HashMap,如果需要保持图中元素的插入顺序或者访问顺序,就使用LinkedHashMap,如果需要使图按照键值排序,就使用TreeMap。

5、其他集合类

下面主要介绍一下其它几个特殊的集合类,Vector、Stack、HashTable、ConcurrentHashMap以及CopyOnWriteArrayList。

java.util.Vector<E>

用法上,Vector与ArrayList基本一致,不同之处在于Vector使用了关键字synchronized将访问和修改向量的方法都变成同步的了,所以对于不需要同步的应用程序来说,类ArrayList比类Vector更高效。

java.util.Stack<E>

Stack,栈类,是Java2之前引入的,继承自类Vector。

java.util.HashTable

HashTable和前面介绍的HashMap很类似,它也是一个散列表,存储的内容是键值对映射,不同之处在于,HashTable是继承自Dictionary的,HashTable中的函数都是同步的,这意味着它也是线程安全的,另外,HashTable中key和value都不可以为null。

java.util.ConcurrentHashMap

ConcurrentHashMap是HashMap的线程安全版。同HashMap相比,ConcurrentHashMap不仅保证了访问的线程安全性,而且在效率上与HashTable相比,也有较大的提高。

java.util.CopyOnWriteArrayList

CopyOnWriteArrayList,是一个线程安全的List接口的实现,它使用了ReentrantLock锁来保证在并发情况下提供高性能的并发读取。

java.util.CopyOnWriteArraySet

CopyOnWriteArraySet,是一个线程安全的set接口的实现,它使用了ReentrantLock锁来保证在并发情况下提供高性能的并发读取。

ConcurrentLinkedQuerue是一个先进先出的队列。它是非阻塞队列。

ConcurrentSkipListMap可以在高效并发中替代SoredMap(例如用Collections.synchronzedMap包装的TreeMap)。

ConcurrentSkipListSet可以在高效并发中替代SoredSet(例如用Collections.synchronzedSet包装的TreeMap)。

6、泛型集合算法

6.1 排序

static <T extends Comparable<? super T>> void java.util.Collections.sort(List<T> elements,[new Comparator<T>(){ public int compare(T o1, T o2){return ...} } ])

对列表元素排序

6.2 查找

static <T extends Comparable<? super T>> int java.util.Collections.binarySearch(List<T> elements, T key)

二分查找key,返回对象索引

6.3 其他

static <T> java.util.Collections.min(Collection<T> elements, Comparator<? super T> c)static <T> java.util.Collections.max(Collection<T> elements, Comparator<? super T> c)

查找最小值/最大值

三、并发部分API

java.lang.Runnable

void run()

必须覆盖这个方法

java.lang.Thread

Thread()Thread(Runnable target)

构造器

void start()

启动线程

void run()

如果没有重写,调用关联Runnable的run方法

void interupt()

中断线程(中止阻塞状态,对运行线程无作用)

void setPriority(int newPriority)

设置优先级(1-10,默认5)

static void yield()static void sleep(long millis)

使当前线程处于让步状态(让步于同优先级或高优先级线程)休眠

void setDaemon()

设置为守护线程

Thread.State getState()

获得线程当前状态

锁对象

ReentrantLock myLock = new ReentrantLock();
mylock.lock();
try{
     critical section
}finally{
     mylock.unlock();
}

条件对象

private ReetranLock mylock = new ReetranLock();
private Condition sufficientFunds = mylock.newCondition()
public void transfer(int from, int amount)
{
    mylock.lock();
    try{
         while(account[from] < amount){
              sufficientFunds.await();
          }
          ...
          sufficientFunds.singalAll();
      }finally{
          mylock.unlock();
      }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"Java高级架构面试知识点整理.pdf"是一份关于Java高级架构的面试知识点的文档。该文档主要包括以下几个方面的内容: 1. Java多线程和并发:讲解Java中的多线程概念、线程安全性、线程的生命周期和状态转换、线程同步与锁、并发工具类(如CountDownLatch、Semaphore等)、线程池等相关知识点。 2. JVM与GC算法:了解Java虚拟机(JVM)的基本原理、内存结构和内存模型,理解垃圾回收(GC)算法的原理和常见的垃圾回收器(如Serial、Parallel、CMS、G1等),掌握GC调优的一般方法。 3. 分布式架构和并发编程模型:认识分布式系统的基本概念、CAP定理、分布式存储和分布式计算的方案,了解常见的并发编程模型(如Actor模型、异步编程等)和实现方式。 4. 高性能网络编程:熟悉Java NIO的基本原理、底层实现和使用方式,了解Java网络编程的相关API和概念(如Socket、ServerSocket、Selector等),了解基于Netty框架的高性能网络编程。 5. 分布式消息队列和中间件:了解消息队列的基本概念、常见的消息中间件(如RabbitMQ、Kafka等)的特点和使用场景,理解消息队列的高可用、持久化、消息顺序等特性。 6. 微服务和服务治理:理解微服务的概念、优劣势和架构特点,了解微服务的拆分和组织原则,熟悉常见的服务治理框架(如Spring Cloud、Dubbo等)和相关的技术组件。 7. 高可用和容灾设计:掌握高可用架构的设计原则和常见的高可用技术方案(如集群、负载均衡、故障切换等),了解容灾方案的设计和实现方法,学习如何保证系统的可靠性和稳定性。 8. 性能优化与调优:了解性能优化的基本思路和方法,熟悉性能调优的一般流程和工具,掌握常见的性能调优技术(如缓存、异步、批处理等)和优化手段。 以上就是对于"Java高级架构面试知识点整理.pdf"文档的简要回答,希望对您有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值