gpt4 book ai didi

java - 排序字符串数组 - 按顺序插入值

转载 作者:行者123 更新时间:2023-12-01 09:11:43 26 4
gpt4 key购买 nike

我想知道是否有人可以为我目前正在从事的一项工作提供一些指导。

这个概念是我必须使用字符串数组列表创建一个排序 vector ,并且能够从数组中添加、删除和查找项目。

我目前正在努力添加项目。

在构造函数中我们有:

private int maxlength;
private int numberofitems;
private String[] data;
private int growby;

并且它们已被初始化为以下值:

maxlength = 10;
numberofitems = 0;
data=new String[maxlength];
growby=10;

然后我有一个函数,它接受一个字符串值并需要将该值插入到数组中:

public void AddItem(String value)
{

if (maxlength == data.length)
{
GrowArray();
}

//Need Help here
}

^^ 这就是我需要帮助的时候。

GrowArray 只是创建一个临时数组,将最大长度增加 10,并将所有值从旧数组复制到新数组。

private void GrowArray()
{
String[] data2=new String[data.length+growby];
System.arraycopy(data, 0, data2, 0, data.length);
data=data2;
}

我的逻辑是这样的:

  • 我需要循环遍历数组,并将搜索值与数组中的每个项目进行比较,看看它是属于当前数组值之前还是之后。

我知道这应该类似于:data[i].compareTo(value) <0;

任何和所有的帮助将不胜感激。 我还应该提到,我不允许使用集合。

谢谢!

最佳答案

只需使用Arrays.binarySearch()。它在排序数组中搜索元素。如果未找到数组,则返回插入点(或者更确切地说 (-(插入点) - 1) )。

所以缺失的代码可能如下所示:

// find index for insertion
int insertionIndex = Arrays.binearySearch(data, value);
if (insertionIndex < 0) {
insertionIndex = -insertionIndex - 1;
}

// move elements
if (insertionIndex < data.length) {
System.arraycopy(data, insertionIndex, data, insertionIndex + 1, data.length - insertionIndex - 1);
}

// insert element
data[insertionIndex] = value;

幸运的是,Arrays.binarySearch 使用compareTo

关于java - 排序字符串数组 - 按顺序插入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40876466/

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