将list<String[]>用stream进行排序
时间: 2024-05-13 13:14:14 浏览: 66
可以使用`Arrays.stream()`将数组转换为流,然后使用`sorted()`方法进行排序。例如,假设有一个`List<String[]>`的列表,可以按照第一个字符串的字典序进行排序:
```
List<String[]> list = new ArrayList<>();
list.add(new String[]{"apple", "banana"});
list.add(new String[]{"pear", "orange"});
list.add(new String[]{"banana", "apple"});
list = list.stream()
.sorted(Comparator.comparing(arr -> arr[0]))
.collect(Collectors.toList());
```
这样,`list`中的元素就按照第一个字符串的字典序进行了排序。如果需要按照第二个字符串排序,可以将`comparing()`方法中的索引改为1。
相关问题
Map<String,Map<String, List<String>>>排序
对于Map<String,Map<String, List<String>>>的排序,可以使用Java 8中的Stream API来实现。具体的代码如下所示:
```java
Map<String,Map<String, List<String>>> map = new HashMap<>();
// 假设已经将map中的值填充完毕
List<Entry<String, Map<String, List<String>>>> entryList = new ArrayList<>(map.entrySet());
// 按照外层Map的key进行升序排序
Collections.sort(entryList, (entry1, entry2) -> entry1.getKey().compareTo(entry2.getKey()));
// 遍历entryList,对每个内层Map中的List进行升序排序
entryList.forEach(entry -> {
List<Entry<String, List<String>>> innerEntryList = new ArrayList<>(entry.getValue().entrySet());
Collections.sort(innerEntryList, (innerEntry1, innerEntry2) -> innerEntry1.getKey().compareTo(innerEntry2.getKey()));
entry.setValue(new LinkedHashMap<>());
innerEntryList.forEach(innerEntry -> {
Collections.sort(innerEntry.getValue());
entry.getValue().put(innerEntry.getKey(), innerEntry.getValue());
});
});
// 将排序后的map输出
entryList.forEach(entry -> System.out.println(entry.getKey() + " : " + entry.getValue()));
```
该代码首先将外层Map转换成Entry对象的List,然后按照外层Map的key进行升序排序。接着,遍历每个Entry对象,将内层Map转换成Entry对象的List,并按照内层Map的key进行升序排序。最后,将内层List进行升序排序,并将结果重新放入内层Map中。最后,将排序后的map输出。
java8 排序 一个list<string> 根据另一个list<string>排序
在Java 8中,可以使用`Comparator`接口和`Stream`来对一个`List<String>`根据另一个`List<String>`进行排序。下面是一个示例代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
List<String> list1 = Arrays.asList("apple", "banana", "orange");
List<String> list2 = Arrays.asList("banana", "orange", "apple");
List<String> sortedList = sortList(list1, list2);
System.out.println(sortedList);
}
public static List<String> sortList(List<String> list1, List<String> list2) {
Map<String, Integer> indexMap = new HashMap<>();
for (int i = 0; i < list2.size(); i++) {
indexMap.put(list2.get(i), i);
}
Collections.sort(list1, Comparator.comparingInt(s -> indexMap.getOrDefault(s, Integer.MAX_VALUE)));
return list1;
}
}
```
在上面的代码中,我们首先创建了两个列表`list1`和`list2`,分别表示要排序的列表和排序依据的列表。然后,我们定义了一个`sortList`方法来对`list1`进行排序。在该方法中,我们创建了一个`HashMap`来存储`list2`中每个元素的索引位置。然后,我们使用`Collections.sort`方法和自定义的比较器来对`list1`进行排序,比较器根据`indexMap`中存储的索引位置进行比较。最后,返回排序后的列表。
运行上述代码,输出结果为:`[banana, orange, apple]`,表示根据`list2`对`list1`进行排序后的结果。
阅读全文