java - 如何根据条件从数组中删除元素?爪哇
问题描述
我有 2 个信息来源,我从中获得不同的产品来展示。但是,有重复的(相同的标识符),我想消除这些。我有一个标志,它告诉我我得到了哪个来源,我想消除那些在 1 中重复其标识符和标志的那些。这是我完成提取信息源后得到的对象数组:
[
{
"identifier":"10410",
"sku":"69343",
"product":"Name 2",
"flag":2,
"date":null,
"price":304.74
},
{
"identifier":"10555",
"sku":"69343",
"product":"Period 2",
"flag":2,
"date":null,
"price":304.74
},
{
"identifier":"10410",
"sku":"69388",
"product":"Other name 2",
"flag":1,
"date":null,
"price":304.74
},
{
"identifier":"10444",
"sku":"69341",
"product":"Other name 3",
"flag":1,
"date":null,
"price":304.74
}
]
我试着做这个:
[
{
"identifier":"10410",
"sku":"69343",
"product":"Name 2",
"flag":2,
"date":null,
"price":304.74
},
{
"identifier":"10555",
"sku":"69343",
"product":"Period 2",
"flag":2,
"date":null,
"price":304.74
},
{
"identifier":"10444",
"sku":"69341",
"product":"Other name 3",
"flag":1,
"date":null,
"price":304.74
}
]
有谁能够帮我?或者给我关于如何用Java做的建议?
解决方案
这是一个简单的例子。
该模型将是您的构造函数,带有 setter 和 getter。
public class ModelExample {
String title;
public ModelExample(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
让我们创建一个该模型的列表,并为其添加标题。您将对 json 数组执行 for 循环并将值添加到其中。不过,它与此类似。
List<ModelExample> model = new ArrayList<ModelExample>();
model.add(new ModelExample("instructor"));
model.add(new ModelExample("Dev"));
model.add(new ModelExample("Dev 2"));
model.add(new ModelExample("Dev 3"));
model.add(new ModelExample("Dev 4"));
model.add(new ModelExample("Dev 5"));
model.add(new ModelExample("Dev 6"));
如果我想把所有东西都打印出来......
for (int k = 0; k < model.size(); k++) {
System.out.println("Title: " + model.get(k).getTitle());
}
这将打印以下内容:
Title: instructor
Title: Dev
Title: Dev 2
Title: Dev 3
Title: Dev 4
Title: Dev 5
Title: Dev 6
然后我想遍历列表,并且我有一个条件,如果索引标题等于讲师,我将其删除。
for (int i = 0; i < model.size(); i++) {
if (model.get(i).getTitle().equals("instructor")){
model.remove(i);
}
}
然后我想创建一个新的 JSONArray 并将列表中的剩余项目添加为 json 对象。
JSONArray array = new JSONArray();
try {
for (int i = 0; i < model.size(); i++) {
JSONObject object = new JSONObject();
object.put("title", model.get(i).getTitle());
array.put(object);
}
System.out.println("JSONArray: " + array.toString());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
最终的打印值将是这个。
[{
"title": "Dev"
}, {
"title": "Dev 2"
}, {
"title": "Dev 3"
}, {
"title": "Dev 4"
}, {
"title": "Dev 5"
}, {
"title": "Dev 6"
}]
这是我编写的整个课程。请记住,您应该始终练习 OOP。创建方法来删除索引,而不是在整个类中使用它。这是一种非常快速且混乱的方法。
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class ModelExample {
String title;
public ModelExample(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
List<ModelExample> model = new ArrayList<ModelExample>();
model.add(new ModelExample("instructor"));
model.add(new ModelExample("Dev"));
model.add(new ModelExample("Dev 2"));
model.add(new ModelExample("Dev 3"));
model.add(new ModelExample("Dev 4"));
model.add(new ModelExample("Dev 5"));
model.add(new ModelExample("Dev 6"));
for (int k = 0; k < model.size(); k++) {
System.out.println("Title: " + model.get(k).getTitle());
}
System.out.println("\n\nSize of list before removing: " + model.size());
for (int i = 0; i < model.size(); i++) {
if (model.get(i).getTitle().equals("instructor")){
model.remove(i);
System.out.println("REMOVED INSTRUCTOR");
}
}
System.out.println("Size of list after removing: " + model.size() + "\n\n");
JSONArray array = new JSONArray();
try {
for (int i = 0; i < model.size(); i++) {
JSONObject object = new JSONObject();
object.put("title", model.get(i).getTitle());
array.put(object);
}
for (int j = 0; j < array.length(); j++) {
System.out.println("Title: " + array.get(j));
}
System.out.println(array.toString());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
最后,这打印了以下内容:
Title: instructor
Title: Dev
Title: Dev 2
Title: Dev 3
Title: Dev 4
Title: Dev 5
Title: Dev 6
Size of list before removing: 7
REMOVED INSTRUCTOR
Size of list after removing: 6
Title: {"title":"Dev"}
Title: {"title":"Dev 2"}
Title: {"title":"Dev 3"}
Title: {"title":"Dev 4"}
Title: {"title":"Dev 5"}
Title: {"title":"Dev 6"}
[{"title":"Dev"},{"title":"Dev 2"},{"title":"Dev 3"},{"title":"Dev 4"},{"title":"Dev 5"},{"title":"Dev 6"}]
推荐阅读
- javascript - For循环比较值
- terminal - 如何在ubuntu的终端更改提示?
- google-apps-script - Google Apps 脚本、OAuth2 和 Salesforce
- c++ - C++:我可以在模板参数包中强制执行至少 1 个参数吗
- python - 如何检查过滤后的请求是否返回空数组?
- c# - 和/或 XPath 查询以选择一些事件日志记录
- sql-server - 通过网络加速 SQL 传输
- node.js - 如何通过 Selenium 根据 HTML 定位文本为 My Name 的元素
- random - 随机位置生成
- python - 何时使用 iloc 和 loc 作为布尔值