Java 所有最长的弦
我是Java的初学者。你能帮我找到给定数组中所有最大的字符串吗Java 所有最长的弦,java,string,Java,String,我是Java的初学者。你能帮我找到给定数组中所有最大的字符串吗 String[] allLongestStrings(String[] a) { List<String> newArray = new ArrayList<String>(); String max = a[0]; for( int i = 0; i < a.length; i++){ int sum = max.compareTo(a[i]); if( sum < 0) max
String[] allLongestStrings(String[] a) {
List<String> newArray = new ArrayList<String>();
String max = a[0];
for( int i = 0; i < a.length; i++){
int sum = max.compareTo(a[i]);
if( sum < 0) max = a[i];
}
for( int i = 0; i < a.length; i++){
int b = max.compareTo(a[i]);
if (b == 0) newArray.add(a[i]);
}
String[] stringArray = newArray.toArray(new String[0]);
return stringArray;
String[]allLongestStrings(String[]a){
List newArray=newarraylist();
字符串max=a[0];
for(int i=0;i
}快速回答:
String[] allLongestStrings(String[] arr) {
int longest = Arrays.stream(arr)
.mapToInt(String::length)
.max()
.orElse(-1);
return Arrays.stream(arr)
.filter(s -> s.length() == longest)
.toArray(String[]::new);
}
public static void main(String[] args) {
String[] arr = new String[4];
arr[0] = "cat";
arr[1] = "mouse";
arr[2] = "goose";
arr[3] = "owl";
String[] resultJava8 = allLongestStringsJava8(arr);
String[] resultTraditionalWay = allLongestStringsTraditionalWay(arr);
}
static String[] allLongestStringsJava8(String[] arr) {
int longest = Arrays.stream(arr)
.mapToInt(String::length)
.max()
.orElse(-1);
return Arrays.stream(arr)
.filter(s -> s.length() == longest)
.toArray(String[]::new);
}
static String[] allLongestStringsTraditionalWay(String[] arr) {
Set<String> result = new HashSet<>(); //or use a LinkedList if there can be same strings
int longestLength = 0;
for (String s : arr) {
if (s.length() < longestLength)
continue;
if (s.length() > longestLength)
result.clear();
result.add(s);
longestLength = s.length();
}
return result.toArray(new String[0]);
}
用几种方法详细回答:
String[] allLongestStrings(String[] arr) {
int longest = Arrays.stream(arr)
.mapToInt(String::length)
.max()
.orElse(-1);
return Arrays.stream(arr)
.filter(s -> s.length() == longest)
.toArray(String[]::new);
}
public static void main(String[] args) {
String[] arr = new String[4];
arr[0] = "cat";
arr[1] = "mouse";
arr[2] = "goose";
arr[3] = "owl";
String[] resultJava8 = allLongestStringsJava8(arr);
String[] resultTraditionalWay = allLongestStringsTraditionalWay(arr);
}
static String[] allLongestStringsJava8(String[] arr) {
int longest = Arrays.stream(arr)
.mapToInt(String::length)
.max()
.orElse(-1);
return Arrays.stream(arr)
.filter(s -> s.length() == longest)
.toArray(String[]::new);
}
static String[] allLongestStringsTraditionalWay(String[] arr) {
Set<String> result = new HashSet<>(); //or use a LinkedList if there can be same strings
int longestLength = 0;
for (String s : arr) {
if (s.length() < longestLength)
continue;
if (s.length() > longestLength)
result.clear();
result.add(s);
longestLength = s.length();
}
return result.toArray(new String[0]);
}
publicstaticvoidmain(字符串[]args){
字符串[]arr=新字符串[4];
arr[0]=“cat”;
arr[1]=“鼠标”;
arr[2]=“鹅”;
arr[3]=“猫头鹰”;
String[]resultJava8=allLongestStringsJava8(arr);
String[]resultTraditionalWay=allLongestStringsTraditionalWay(arr);
}
静态字符串[]allLongestStringsJava8(字符串[]arr){
int longest=Arrays.stream(arr)
.mapToInt(字符串::长度)
.max()
.orElse(-1);
返回数组.stream(arr)
.filter(s->s.length()==最长)
.toArray(字符串[]::新建);
}
静态字符串[]AllLongestStringsTransitionalway(字符串[]arr){
Set result=new HashSet();//如果可以有相同的字符串,则使用LinkedList
int longestLength=0;
用于(字符串s:arr){
如果(s.length()longestLength)
result.clear();
结果。添加(s);
最长长度=s.长度();
}
返回result.toArray(新字符串[0]);
}
您可以使用以下代码:
public static void main(String[] args) {
String[] a = new String[] {"ab", "abc", "a", "def"};
int maxLength = Arrays.stream(a).max(Comparator.comparing(s -> s.length())).get().length();
System.out.println(Arrays.stream(a).filter(str -> str.length() == maxLength).collect(Collectors.toList()));
}
输出:
[abc, def]
你应该读书。它不可用于比较长度!根据此命令,将返回一个可选字符串,而不是question@Kartik如果查看方法签名,将返回字符串[]。因此,我的假设是,如果输入是[cat]、[mouse]、[goose],那么应该返回[mouse]、[goose]。@Gernot-Yup,对不起,是在我打字时意识到的。更新了我的答案,我的错。更新了我的答案。