Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 所有最长的弦_Java_String - Fatal编程技术网

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

我是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 = 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,对不起,是在我打字时意识到的。更新了我的答案,我的错。更新了我的答案。