List<List<>>取最小长度的List
时间: 2024-01-01 16:48:22 浏览: 31
你可以使用Java 8的Stream API来找到最小长度的List。下面是一个示例代码:
```java
List<List<Integer>> listOfLists = new ArrayList<>();
listOfLists.add(Arrays.asList(1, 2, 3));
listOfLists.add(Arrays.asList(4, 5));
listOfLists.add(Arrays.asList(6));
Optional<List<Integer>> smallestList = listOfLists.stream()
.min(Comparator.comparingInt(List::size));
if (smallestList.isPresent()) {
System.out.println("Smallest List: " + smallestList.get());
} else {
System.out.println("List of Lists is empty!");
}
```
在上面的代码中,我们使用了`min()`方法来找到最小长度的List。我们通过使用`Comparator.comparingInt(List::size)`来比较每个List的大小。最后,我们使用`Optional`类来处理可能为空的情况。如果最小长度的List存在,我们就打印出它的内容。否则,我们就打印出List of Lists为空的信息。
相关问题
两个list 分组相加
可以通过遍历两个List,将对应位置的元素相加,并将结果存入一个新的List中来实现两个List的分组相加。以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.List;
public class ListAddition {
public static List<Integer> addLists(List<Integer> list1, List<Integer> list2) {
List<Integer> result = new ArrayList<>();
int size = Math.min(list1.size(), list2.size());
for (int i = 0; i < size; i++) {
int sum = list1.get(i) + list2.get(i);
result.add(sum);
}
return result;
}
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
List<Integer> list2 = new ArrayList<>();
list2.add(4);
list2.add(5);
list2.add(6);
List<Integer> result = addLists(list1, list2);
System.out.println(result); // 输出:[5, 7, 9]
}
}
```
在上面的示例代码中,我们定义了一个`addLists`方法,该方法接受两个List作为参数,并返回一个新的List,其中包含了对应位置元素的相加结果。我们使用`Math.min`方法获取两个List的最小长度,以避免出现索引越界的情况。然后,我们使用一个循环遍历两个List,并将对应位置的元素相加,将结果添加到新的List中。最后,我们在`main`方法中创建了两个List,并调用`addLists`方法进行分组相加,并输出结果。
遍历一个String类型的list取里面的最小值
你可以使用Java 8的Stream API来遍历一个String类型的list并取得其中的最小值。以下是一个示例代码:
```java
List<String> stringList = Arrays.asList("apple", "banana", "orange", "pear");
String minString = stringList.stream().min(Comparator.naturalOrder()).orElse(null);
System.out.println("The minimum string is: " + minString);
```
在这个例子中,我们首先创建了一个包含几个字符串的String类型的list。接着,我们使用Stream API的min()方法来取得list中的最小值。由于我们使用的是自然排序(naturalOrder)的比较器,所以最小值将是字典序最小的字符串。最后,我们使用orElse()方法来处理可能出现的空指针异常,并打印出最小字符串的值。
如果你需要按照其他的比较方式来找到最小值,你可以提供一个自定义的比较器。例如,如果你希望按照字符串长度来比较,你可以使用以下的代码:
```java
String minStringLength = stringList.stream().min(Comparator.comparing(String::length)).orElse(null);
System.out.println("The minimum string by length is: " + minStringLength);
```
这个示例中,我们使用了comparing()方法来创建一个比较器,它将按照字符串长度来比较。注意,我们使用了方法引用(String::length)来获取每个字符串的长度。同样地,我们使用了orElse()方法来处理可能出现的空指针异常,并输出最小字符串的值。