我遇到的问题是关于大学的实验室工作问题,所以我想要的是从这里开始的一些指导。问题是提供一个代码片段,从中我们应该按字母顺序获取数组的第一个和最后一个元素:
public class NamesTest {
public static void main(String[] args){
// values hard-coded to facilitate testing
String[] names = {"john", "mary", "andy", "beth", "chris",
"frank", "carol", "bob", "sue", "joe"};
System.out.println("first: " + getFirstAlphabetically(names));
System.out.println("last: " + getLastAlphabetically(names));
}
}
预期产出:
首先:安迪
最后:起诉
答案 0 :(得分:1)
String
实现Comparable<String>
,其中排序是字典顺序(大致按字母顺序排列,但处理的不仅仅是字母字符)。
因此:
Collections.min(collectionOfStrings)
将在集合中返回按字典顺序排列的第一个字符串。
但你有一个数组:你可以使用List
将其转换为Collection
(Arrays.asList(arrayOfStrings)
}。
把它放在一起:
String firstAlphabetically = Collections.min(Arrays.asList(names));
同样,您可以使用Collections.max
按字母顺序获取最后一个字符串。
您也可以在没有Collections
或排序的情况下执行此操作:
String firstAlphabetically = names[0];
for (String name : names) {
if (name.compareTo(firstAlphabetically) < 0) {
firstAlphabetically = name;
}
}
这在O(n)
时间运行并且不会更改输入,而排序为O(n log n)
,要么您需要复制或更改输入数组。
答案 1 :(得分:1)
您可以使用Arrays.sort()
对字符串数组names
进行排序,然后获取第一项。
这样的事情:
String[] names = {"john", "mary", "andy", "beth", "chris",
"frank", "carol", "bob", "sue", "joe"};
Arrays.sort(names);
String alphabeticallyFirst = names[0];
String alphabeticallyLast = names[names.length - 1];
答案 2 :(得分:0)
我假设这是一门入门级课程。基于这个假设,我认为他们的目标是让你自己对数组进行排序,然后获取排序数组的第一个和最后一个索引。如果您不能使用内置的Java库,请查看实现类似bubble排序的算法以对数组进行排序。请注意,您可以使用CompareTo方法比较两个字符串。