gpt4 book ai didi

java - 在通用 SortedSet 中创建 E 数组

转载 作者:行者123 更新时间:2023-12-02 00:21:58 36 4
gpt4 key购买 nike

作为示例,我正在开发一个简单的 MySortedSet<E>在java中实现SortedSet<E>界面。它使用一个简单的数组进行备份,即 E[] array

我对此有几个问题:

这是类:(我没有编写整个代码,而是编写相关部分)

public class MySortedSet<E> implements SortedSet<E>, Iterator<E> {

private E[] array;
private Comparator<? super E> _comparator;
private int size = 0;
private int capacity;

@SuppressWarnings("unchecked")
public MySortedSet() {
this.capacity = 10;
this.array = (E[]) new Object[this.capacity];
// this.array = Array.newInstance(Class<E> var,int size);
// We have to get Class<E> from outside caller.
}
}

问题 1: 有人可以告诉我是否有更好的解决方案在构造函数中创建新数组而不是这个 this.array = (E[]) new Object[this.capacity];

最佳答案

ArrayList<E> stores the elements在一个简单的Object[] ,原始值会自动装箱,并且 assigns null to holes被删除的元素留下。

实现 Comparable<E> 的类必须实现 int compareTo(E other) 其工作原理类似于 compare(E o1, E o2) 来自Comparator 。您可以检查内部比较器的 null并依靠对象的自然排序,或者您可以定义一个内部“使用自然排序”比较器实现。

Binary search是一种最小化查找项目或将项目插入排序列表的位置所需的比较次数的方法。您不必从第一个元素开始检查每个元素,而是从列表的中点开始。如果查找的项目应该出现在找到的元素之前,则向前移动一半并重复;否则中途移动到末尾并重复。每次重复时,都会使用之前的下限/上限和中点作为新的子列表,将每一步中的元素数量减半。

想象一下尝试猜测 1 到 100 之间的一个数字,每次系统都会告诉您是否猜得太高或太低。

  • 50 - 太高
  • 25 - 太低
  • 37 - 太高
  • 31 - 太低
  • 34 - 太低
  • 35 - 正确!

关于java - 在通用 SortedSet 中创建 E 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10778203/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com