Java用流获取string类型数组最大值
时间: 2023-11-12 17:05:46 浏览: 168
可以使用Java 8的流和Lambda表达式来获取String类型数组中的最大值。具体代码如下:
```java
String[] arr = {"apple", "banana", "orange", "kiwi"};
String maxStr = Arrays.stream(arr)
.max(Comparator.comparing(String::length))
.orElse("");
System.out.println("最长的字符串是:" + maxStr);
```
解释一下代码:
1. 首先定义一个String类型的数组 `arr`,作为测试数据。
2. 使用`Arrays.stream(arr)`将数组转换为一个流。
3. 调用`max`方法,并传入一个`Comparator`比较器对象,该比较器使用`comparing`方法和Lambda表达式`String::length`,根据字符串的长度来比较大小。
4. 最后使用`orElse`方法,传入一个空字符串,避免数组为空时出现异常。
5. 输出结果即可。
这样就可以得到字符串数组中长度最长的字符串了。
相关问题
java 数组最大值和最小值
在Java中,查找数组的最大值和最小值可以通过多种方法实现,包括遍历整个数组、使用Collections框架或者自定义函数。以下是几种常见的做法:
1. 遍历数组法:
```java
int[] array = {5, 3, 8, 1, 9};
int max = array[0];
int min = array[0];
for (int i : array) {
if (i > max) {
max = i;
}
if (i < min) {
min = i;
}
}
System.out.println("最大值: " + max);
System.out.println("最小值: " + min);
```
2. 使用Arrays类(适用于数值类型的数组):
```java
int[] array = {5, 3, 8, 1, 9};
int max = Arrays.stream(array).max().getAsInt();
int min = Arrays.stream(array).min().getAsInt();
System.out.println("最大值: " + max);
System.out.println("最小值: " + min);
```
3. 自定义函数法(通用类型数组):
```java
public class ArrayUtil {
public static int findMax(int[] array) {
return Arrays.stream(array).max().orElse(Integer.MIN_VALUE);
}
public static int findMin(int[] array) {
return Arrays.stream(array).min().orElse(Integer.MAX_VALUE);
}
// 使用示例
public static void main(String[] args) {
int[] array = {5, 3, 8, 1, 9};
System.out.println("最大值: " + findMax(array));
System.out.println("最小值: " + findMin(array));
}
}
```
3.编写一个泛型方法,能够返回一个int类型数组的最大值和最小值,String类型数组的最大值和最小值(按字典排序)
在Java中,我们可以编写两个泛型方法,一个处理`int`类型的数组,另一个处理`String`类型的数组。这两个方法将分别找到最大值和最小值,并且对于`String`数组,我们还需要按照字母顺序(字典排序)查找最大和最小值。
首先,对于`int`数组,我们可以直接使用内置的`Math.max`和`Math.min`方法:
```java
public class ArrayUtils {
public <T extends Comparable<T>> T[] findMinMax(int[] arr) {
if (arr == null || arr.length == 0) {
throw new IllegalArgumentException("Array cannot be empty");
}
return new T[]{Collections.max(Arrays.asList(arr)), Collections.min(Arrays.asList(arr))};
}
// 类似的,处理String数组时需要先转换为Comparable并排序
public <T extends Comparable<T>> T[] findMinMaxSorted(String[] arr) {
if (arr == null || arr.length == 0) {
throw new IllegalArgumentException("Array cannot be empty");
}
Arrays.sort(arr);
return new T[]{arr[arr.length - 1], arr[0]};
}
}
```
注意:`<T extends Comparable<T>>`意味着方法接受任何实现了`Comparable`接口的数据类型作为输入,这样我们就可以对它们进行排序。
然后在主方法中调用这两个方法:
```java
public static void main(String[] args) {
int[] intArr = {5, 3, 9, 1, 7};
String[] strArr = {"z", "a", "d", "b", "c"};
try {
int[] minMaxInt = ArrayUtils.findMinMax(intArr);
System.out.println("Int array: Min=" + minMaxInt[0] + ", Max=" + minMaxInt[1]);
String[] minMaxStr = ArrayUtils.findMinMaxSorted(strArr);
System.out.println("String array (sorted): Min=" + minMaxStr[0] + ", Max=" + minMaxStr[1]);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
```
阅读全文