collection java 顺序_Java Collection集合面试题4

Queue和Stack区别什么?

Queue

队列和Stack堆栈都被用来存储数据。 java.util.Queue是一个接口,实现类是目前在java并发包。队列允许以先入先出(FIFO)方式获取数据,但它并非总是如此。deque的接口允许从队列两端获取元素。

栈是类似,除了它可以是后进先出(LIFO)的顺序获取数据。

栈是一个继承Vector的类,而Queue是一个接口。

Comparable和 Comparator接口是什么?

排序方法。 Comparable接口的compareTo (T OBJ)方法,我们可重写此方法,方法返回一个负整数,零或正整数,分别表达这两个对象的关系是是小于,等于,或大于。在最真实的生活场景我们要根据不同的参数排序。例如,CEO想排序的员工工资, HR会喜欢它们进行排序的年龄。这是情况下,我们需要使用Comparator接口只有一个字段可以排序的基础上。

Comparator接口比较(对象O1, 对象O2)方法需要实现,需要两个对象参数,如果第一个参数小于第二个,则方法返回负整数,如果他们都是相等的返回零,如果第一参数是大于第二个返回正整数。

Comparable 和Comparator接口之间的差异是什么?

objects.Comparable接口是用来提供对象的自然排序,我们可以用它来提供基于单一逻辑排序。

Comparator接口是用来提供不同的算法进行排序,我们可以选择我们要使用的Comparator给对象集合排序。

对象列表如何排序?

如果我们需要一个对象数组进行排序,我们可以使用Arrays.sort()。如果我们需要的对象List列表进行排序,我们可以使用Collections.sort()。集合内部使用数组排序方法,所以他们都具有相同的性能。

传递一个集合作为参数给函数时,我们如何能确保函数将无法对其进行修改?

我们可以创建一个只读集合,使用Collections.unmodifiableCollection作为参数传递给使用它的方法,这将确保任何改变集合的操作将抛出UnsupportedOperationException。

我们怎样从给定集合创建一个同步集合?

我们可以使用Collections.synchronizedCollection的获得同步的(线程安全的)集合,是原集合的备份。

常见的集合框架中实现的算法是什么?

Java集合框架提供了常用的算法实现,如排序和搜索。 还有一部分洗牌shuffling, min-max values最小最大值。

大O符号是什么?举一些例子吗?

大O符号描述算法在数据结构中的元素数量方面的性能表现。由于集合类实际上是数据结构,我们通常倾向于使用大O符号基于时间 性能和内存等选择使用集合实现。

1. ArrayList的get(index)是一个常数的操作,并没有依赖于列表中的元素数量。因此,它的性能在大O符号是O(1)。

2: 线性搜索数组或列表的性能表现为O(n),因为我们需要通过搜索整个列表中的元素的方式查找元素。

有关Java集合框架的最佳实践是什么?

根据需要正确类型的集合,例如,如果大小是固定的,我们可能要使用Array的ArrayList 。如果我们根据插入的顺序来遍历地图,需要使用TreeMap。如果我们不想重复,应该使用Set。

一些集合类允许指定的初始容量,所以对于我们将存储的元素数如果我们有一个估计,我们可以用它来避免大小调整。

在写程序的接口而不是实现,它可以让我们在稍后的时间点轻松地改变实现。

始终使用泛型类型安全,并避免在运行时抛出。

使用JDK提供的不可变的类作为Mao的键key,以避免实施的hashCode( )和equals( )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值