java集合用stream去掉最后一个/前面的所有数据
时间: 2024-05-16 16:16:56 浏览: 7
可以使用Java 8中的Stream API来实现去掉最后一个/前面的所有数据。具体方法如下:
去掉最后一个数据:
```java
List<String> list = Arrays.asList("a", "b", "c", "d");
list.stream().limit(list.size() - 1).forEach(System.out::println);
```
输出结果为:
```
a
b
c
```
去掉前面的所有数据:
```java
List<String> list = Arrays.asList("a", "b", "c", "d");
list.stream().skip(1).forEach(System.out::println);
```
输出结果为:
```
b
c
d
```
这里使用了limit和skip两个方法,limit(n)方法表示只取前n个元素,skip(n)方法表示跳过前n个元素。我们可以根据需求选择使用其中的一个或者两个方法组合使用。
相关问题
java集合用stream去掉字符串"/主机/www", "/主机/home", "/主机/user"最后一个/前面的全部数据
可以使用Java 8中的Stream API和正则表达式来实现这个需求,具体的代码如下:
```java
List<String> list = Arrays.asList("/主机/www/abc", "/主机/home/def", "/主机/user/xyz");
List<String> result = list.stream()
.map(str -> str.replaceAll("/[^/]*$", "")) // 去掉最后一个/前面的数据
.map(str -> str.replaceAll("^/主机", "")) // 去掉"/主机"
.collect(Collectors.toList());
System.out.println(result);
```
输出结果为:`[www, home, user]`
解释一下代码的思路:
首先将字符串列表转换为Stream,然后通过`map`方法对每个字符串进行处理,第一个`map`方法使用正则表达式去掉最后一个/前面的数据,第二个`map`方法再次使用正则表达式去掉"/主机"。
最后通过`collect`方法将处理后的字符串收集到新的列表中。
java集合用stream去掉字符串"/主机/www", "/windows/home", "/liunx/user"最后一个/前面的全部数据
可以使用Java 8中的Stream和Lambda表达式来实现这个需求。具体代码如下:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> paths = Arrays.asList("/主机/www", "/windows/home", "/liunx/user");
List<String> result = paths.stream()
.map(path -> path.substring(0, path.lastIndexOf('/')))
.collect(Collectors.toList());
System.out.println(result);
}
}
```
输出结果为:[/主机, /windows, /liunx]
在代码中,首先定义了一个包含三个字符串的列表paths。然后通过使用Stream的map方法将每个字符串都转换为去掉最后一个/前面的全部数据的新字符串。最后使用collect方法将所有新字符串收集到一个列表中并打印出来。