一个java list对象集合 有重复的车辆 还有Fault Status 那个车辆有多个这个Fault Status 为2 的就取一个就行了 如果多个Fault Status 为1 为2 就取为1的
时间: 2024-05-05 17:16:07 浏览: 74
可以使用Java 8的Stream API来实现:
假设有一个List<Car> carList,其中Car类包含属性faultStatus(1或2)和其他属性:
```
List<Car> distinctCars = carList.stream()
.collect(Collectors.toMap(Car::getId, Function.identity(),
(car1, car2) -> car1.getFaultStatus() == 1 ? car1 : car2))
.values().stream()
.collect(Collectors.toList());
```
这里使用toMap()方法将车辆按照ID作为key,将Car对象作为value。当key重复时,使用mergeFunction来处理冲突,即如果两个车辆的faultStatus都为2,则只保留一个。如果两个车辆的faultStatus一个为1,一个为2,则保留faultStatus为1的车辆。
最后使用values()方法获取所有Car对象,再用toList()方法转换为List<Car>对象。得到的distinctCars就是去重后的车辆集合。
相关问题
unity webgl中获得java的数据,有接口地址,请求方式为POST,请求参数为{ "metroid": 279 },返回结果为{ "returnCode": 0, "returnMessage": "调用成功", "data": [ { "doorfaultcount": 7, "doorsubhealthcount": 0, "carriageid": 1738, "carriageno": "01011", "carriagename": "HHHT01011", "doorinfolist": [ { "sort": 0, "doorid": 17414, "doorno": "222222222222222", "doorbusno": "01011", "side": "左", "pairid": null, "iskeydoor": false, "statuscode": "FAULT", "isfaultandsubhealth": null, "repaircode": "NOMAL", "exceptioncode": "NOMAL", "statusname": "故障", "faultcode": null, "faultname": null, "time": null, "updown": null, "paramvalueid1": null, "paramvalueid2": null, "paramvalueid3": null, "paramvalueid4": null, "paramvalueid5": null, "dataid": null, "doorstatus": 1 },获得返回结果中的 "carriageno"数据,将获得没每一 "carriageno"数据中的一条分配给一个按钮,数据呈现在按钮的文本框中,总共6个按钮,unity webgl中操作步骤和完整代码怎么写
首先,我们需要先在Unity中使用WebGL来向服务端发送POST请求,并获取返回的数据。以下是示例代码:
```csharp
IEnumerator GetCarriageData()
{
string url = "http://example.com/api/getCarriageData";
string jsonData = "{\"metroid\": 279}";
byte[] byteData = Encoding.UTF8.GetBytes(jsonData);
UnityWebRequest request = new UnityWebRequest(url, "POST");
request.uploadHandler = new UploadHandlerRaw(byteData);
request.downloadHandler = new DownloadHandlerBuffer();
request.SetRequestHeader("Content-Type", "application/json");
yield return request.SendWebRequest();
if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)
{
Debug.LogError(request.error);
}
else
{
string responseJson = request.downloadHandler.text;
Debug.Log(responseJson);
//处理返回数据并显示在按钮上
HandleCarriageData(responseJson);
}
}
```
在上面的代码中,我们使用了UnityWebRequest来发送POST请求,并将请求参数传递为JSON格式。请求完成后,我们解析返回的JSON数据,并将"carriageno"数据存储在一个列表中。
接下来,我们需要将这些数据显示在6个按钮上。可以在Unity中创建6个空对象,并将它们分别命名为"Button1"、“Button2”、"Button3"、"Button4"、"Button5"和"Button6"。我们还需要为每个按钮添加一个Button组件,并将OnClick事件绑定到一个名为"HandleButtonClick"的函数上。以下是示例代码:
```csharp
public class ButtonManager : MonoBehaviour
{
//存储所有车厢号码
private List<string> carriageNos = new List<string>();
//存储所有按钮
private Button[] buttons;
void Start()
{
//获取所有按钮
buttons = new Button[6];
buttons[0] = GameObject.Find("Button1").GetComponent<Button>();
buttons[1] = GameObject.Find("Button2").GetComponent<Button>();
buttons[2] = GameObject.Find("Button3").GetComponent<Button>();
buttons[3] = GameObject.Find("Button4").GetComponent<Button>();
buttons[4] = GameObject.Find("Button5").GetComponent<Button>();
buttons[5] = GameObject.Find("Button6").GetComponent<Button>();
//获取车厢号码数据
StartCoroutine(GetCarriageData());
}
void HandleButtonClick(int buttonIndex)
{
Debug.Log("Button " + buttonIndex + " clicked! Carriage No: " + carriageNos[buttonIndex]);
}
void HandleCarriageData(string jsonData)
{
//解析返回的JSON数据
JObject responseJson = JObject.Parse(jsonData);
if (responseJson["returnCode"].ToString() == "0")
{
JArray dataArray = (JArray)responseJson["data"];
//遍历所有车厢号码
foreach (JObject data in dataArray)
{
string carriageNo = data["carriageno"].ToString();
//将车厢号码存储在列表中
carriageNos.Add(carriageNo);
}
//将车厢号码显示在按钮上
for (int i = 0; i < buttons.Length; i++)
{
if (i < carriageNos.Count)
{
buttons[i].GetComponentInChildren<Text>().text = carriageNos[i];
int buttonIndex = i;
buttons[i].onClick.AddListener(delegate { HandleButtonClick(buttonIndex); });
}
else
{
buttons[i].gameObject.SetActive(false);
}
}
}
else
{
Debug.LogError(responseJson["returnMessage"].ToString());
}
}
}
```
在上面的代码中,我们在Start函数中获取所有按钮,并在HandleButtonClick函数中处理按钮点击事件。HandleCarriageData函数用于处理返回的车厢数据,并将它们显示在按钮上。我们在循环中遍历所有车厢数据,并将它们存储在"carriageNos"列表中。然后,我们将车厢号码显示在按钮上,并将对应的HandleButtonClick函数绑定到OnClick事件上。
这样,当用户点击任何一个按钮时,HandleButtonClick函数将被调用,并打印出与该按钮对应的车厢号码。
error: protocol fault (couldn't read status): Connection reset by peer
根据引用\[1\]和引用\[2\]的描述,你遇到了在连接Android Studio时出现的错误提示"Unable to start adb server: error: protocol fault (couldn’t read status): Connection reset by peer"。这个错误通常是由于5037端口被占用所导致的。5037端口是adb默认的端口。
解决这个问题的方法是找到占用5037端口的程序,并结束该程序,然后重新启动adb。你可以使用以下命令来查找占用5037端口的进程PID:
```
netstat -aon|findstr "5037"
```
然后,使用以下命令通过PID找出进程:
```
tasklist|findstr "PID"
```
将PID替换为上一步找到的进程PID。接下来,打开任务管理器,找到该进程并结束它。最后,使用以下命令启动adb:
```
adb start-server
```
这样就应该能够解决这个问题了。希望对你有帮助!
#### 引用[.reference_title]
- *1* [Unable to start adb server: error: protocol fault (couldn't read status): Connection reset by peer](https://blog.csdn.net/luweicheng24/article/details/80798877)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [adb 连接之 error: protocol fault (couldn‘t read status): Connection reset by peer](https://blog.csdn.net/luoxuexi2020/article/details/115270708)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [Unable to start adb server: error: protocol fault couldn't read status: Connection reset by peer](https://blog.csdn.net/viking_xhg/article/details/82780456)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文