gpt4 book ai didi

java - 使用 LinkedList 对名称进行排序并将它们存储到数组单元格中

转载 作者:搜寻专家 更新时间:2023-11-01 03:33:23 26 4
gpt4 key购买 nike

所以我们的想法是得到一个输入,它是一个 String(具体的名称),然后将它存储在一个 Array 中,其大小为 26各自的细胞。排序是这样进行的:以“A”开头的姓名进入单元格 0,以“B”开头的姓名进入单元格 1,依此类推。现在,一个单元格包含一个 LinkedList,其中名称再次按字母顺序排序。

到目前为止,我采用的方法是使用 switch case。

private void addDataAList(AuthorList[] aL, String iN) {
char nD = Character.toUpperCase(iN.charAt(0));
switch(nD){
case 'A':
AuthorList[0] = iN;
break;

case 'B':
AuthorList[1] = iN;
break;
//and so on
}
}//addData

有没有更有效的方法来做到这一点?

最佳答案

假设 AuthorList 类可能如下所示:

private class AuthorList{
private LinkedList<String> nameList;

public AuthorList() {
}

public AuthorList(LinkedList<String> nameList) {
this.nameList = nameList;
}

public LinkedList<String> getNameList() {
return nameList;
}

public void setNameList(LinkedList<String> nameList) {
this.nameList = nameList;
}

@Override
public String toString() {
final StringBuilder sb = new StringBuilder("AuthorList{");
sb.append("nameList=").append(nameList);
sb.append('}');
return sb.toString();
}
}

我会这样做:

private static void addDataAList(AuthorList[] aL, String iN) {
int index = Character.toUpperCase(iN.trim().charAt(0)) - 'A';
try {
AuthorList tmpAuthorList = aL[index];
if(tmpAuthorList == null) aL[index] = tmpAuthorList = new AuthorList(new LinkedList<>());
if(tmpAuthorList.getNameList() == null) tmpAuthorList.setNameList(new LinkedList<>());
tmpAuthorList.getNameList().add(iN);
} catch (ArrayIndexOutOfBoundsException aioobe){
throw new IllegalArgumentException("Name should start with character A - Z");
}
}

以及用于测试目的的其他主要方法:

public static void main (String[] args){
AuthorList[] aL = new AuthorList[26];
addDataAList(aL, " dudeman");
for (AuthorList list : aL) System.out.println(list);
}

关于java - 使用 LinkedList 对名称进行排序并将它们存储到数组单元格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40678611/

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