Java中,有一个List集合,List<User> list 当用户相同,手机号码也相同,需要记录手机号码的合并开始位置和结束位置。麻烦提供代码实现
时间: 2024-10-28 12:07:21 浏览: 7
java8实现list集合中按照某一个值相加求和,平均值等操作代码
在Java中,如果你想要维护一个`List<User>`,并且当发现有手机号码相同的用户时,记录每个手机号码第一次出现的位置(开始位置)和最后一次出现的位置(结束位置),你可以使用`HashMap`或者自定义一个`Pair`类来存储这个信息。这里是一个简单的示例:
首先,创建一个`User`类:
```java
public class User {
String phoneNumber;
int startPosition;
int endPosition;
// 构造函数,getter和setter省略
}
```
然后,我们使用一个`HashMap`来存储手机号和对应的位置范围:
```java
Map<String, Pair<Integer, Integer>> phonePositions = new HashMap<>();
void updatePhoneRange(List<User> userList) {
for (int i = 0; i < userList.size(); i++) {
User user = userList.get(i);
if (!phonePositions.containsKey(user.phoneNumber)) {
// 手机号码首次出现
phonePositions.put(user.phoneNumber, new Pair<>(i, i)); // 开始和结束位置都是当前索引
} else {
// 手机号码已存在,更新结束位置
Pair<Integer, Integer> pair = phonePositions.get(user.phoneNumber);
phonePositions.put(user.phoneNumber, new Pair<>(pair.getKey(), i + 1));
}
}
}
```
在这个`updatePhoneRange`方法中,我们遍历`list`,如果遇到新的手机号码,则将开始和结束位置都设置为当前索引;如果遇到相同的手机号码,则更新结束位置。
现在,`phonePositions`就是你需要的结果,其中键是手机号码,值是包含开始和结束位置的`Pair`对象。
阅读全文