Java 迭代数组列表
我想知道迭代此ArrayList的最佳方法,此ArrayList来自API的响应,这是ArrayList: 问题是我不知道如何从循环中获取“id”和“value”, 我知道arraylist的大小,但是我不知道如何从这个数组中打印“键”和“值”Java 迭代数组列表,java,android,arraylist,Java,Android,Arraylist,我想知道迭代此ArrayList的最佳方法,此ArrayList来自API的响应,这是ArrayList: 问题是我不知道如何从循环中获取“id”和“value”, 我知道arraylist的大小,但是我不知道如何从这个数组中打印“键”和“值” for(int i=1; i <= contacts.size(); i++) { //Example System.out.print(contacts[i]->id); //Example
for(int i=1; i <= contacts.size(); i++) {
//Example System.out.print(contacts[i]->id);
//Example System.out.print(contacts[i]->contact_name) ;
//Example System.out.print(contacts[i]->numbers);
//Example System.out.print(contacts[i]->emails);
//I want to print id and value
//
}
functionExample将ArrayList作为参数。
这是我的resp.getResponse()的结果:
这是API中的json:
{
"result": "success",
"message": "Lista de Contactos",
"response": [
{
"id": 1,
"contact_name": "EDIFICADORA JUANA",
"numbers": "{24602254,55655545}",
"emails": "{oipoa@gmaio.com,rst008@guan.com}"
},
{
"id": 2,
"contact_name": "LA MEJOR",
"numbers": "{25445877,25845877}",
"emails": "{AMEJOR@GMAIL.COM}"
}
]
}
非常感谢您的帮助。试试这个..它会给出arrayList的id
JSONObject object=new JSONObject(response);
JSONArray array= null;
try {
array = object.getJSONArray("response");
} catch (JSONException e) {
e.printStackTrace();
}
ArrayList<String> idArray=new ArrayList<>();
for(int i=0;i< array.length();i++)
{
idArray.add(getJSONObject(i).getString("id"));
}
JSONObject object=新的JSONObject(响应);
JSONArray数组=null;
试一试{
array=object.getJSONArray(“响应”);
}捕获(JSONException e){
e、 printStackTrace();
}
ArrayList idArray=新的ArrayList();
对于(int i=0;i
试试这个..它会给出id的数组列表
JSONObject object=new JSONObject(response);
JSONArray array= null;
try {
array = object.getJSONArray("response");
} catch (JSONException e) {
e.printStackTrace();
}
ArrayList<String> idArray=new ArrayList<>();
for(int i=0;i< array.length();i++)
{
idArray.add(getJSONObject(i).getString("id"));
}
JSONObject object=新的JSONObject(响应);
JSONArray数组=null;
试一试{
array=object.getJSONArray(“响应”);
}捕获(JSONException e){
e、 printStackTrace();
}
ArrayList idArray=新的ArrayList();
对于(int i=0;i
如果您使用的是ArrayList联系人,请尝试这种方法
for(TreeMap<String,String> contact : contacts){
String id = contact.getValue("id");
}
for(树形映射联系人:联系人){
字符串id=contact.getValue(“id”);
}
如果您使用的是ArrayList联系人,请尝试这种方法
for(TreeMap<String,String> contact : contacts){
String id = contact.getValue("id");
}
for(树形映射联系人:联系人){
字符串id=contact.getValue(“id”);
}
我强烈建议您使用例如Jackson将JSON响应映射到适当的对象。考虑下面的例子:
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class JacksonTest {
private static final String JSON = "{\n" +
"\"result\": \"success\",\n" +
"\"message\": \"Lista de Contactos\",\n" +
"\"response\": [\n" +
" {\n" +
" \"id\": 1,\n" +
" \"contact_name\": \"EDIFICADORA JUANA\",\n" +
" \"numbers\": \"{24602254,55655545}\",\n" +
" \"emails\": \"{oipoa@gmaio.com,rst008@guan.com}\"\n" +
" },\n" +
" {\n" +
" \"id\": 2,\n" +
" \"contact_name\": \"LA MEJOR\",\n" +
" \"numbers\": \"{25445877,25845877}\",\n" +
" \"emails\": \"{AMEJOR@GMAIL.COM}\"\n" +
" }\n" +
" ]\n" +
"}";
@Test
public void testParsingJSONStringWithObjectMapper() throws IOException {
//given:
final ObjectMapper objectMapper = new ObjectMapper();
//when:
final Response response = objectMapper.readValue(JSON, Response.class);
//then:
assert response.getMessage().equals("Lista de Contactos");
//and:
assert response.getResult().equals("success");
//and:
assert response.getResponse().get(0).getId().equals(1);
//and:
assert response.getResponse().get(0).getContactName().equals("EDIFICADORA JUANA");
//and:
assert response.getResponse().get(0).getEmails().equals(Arrays.asList("oipoa@gmaio.com", "rst008@guan.com"));
//and:
assert response.getResponse().get(0).getNumbers().equals(Arrays.asList(24602254, 55655545));
}
static class Response {
private String result;
private String message;
private List<Data> response = new ArrayList<>();
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public List<Data> getResponse() {
return response;
}
public void setResponse(List<Data> response) {
this.response = response;
}
}
static class Data {
private String id;
@JsonProperty("contact_name")
private String contactName;
private String numbers;
private String emails;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getContactName() {
return contactName;
}
public void setContactName(String contactName) {
this.contactName = contactName;
}
public List<Integer> getNumbers() {
return Stream.of(numbers.replaceAll("\\{", "")
.replaceAll("}", "")
.split(","))
.map(Integer::valueOf)
.collect(Collectors.toList());
}
public void setNumbers(String numbers) {
this.numbers = numbers;
}
public List<String> getEmails() {
return Arrays.asList(emails.replaceAll("\\{", "")
.replaceAll("}", "")
.split(","));
}
public void setEmails(String emails) {
this.emails = emails;
}
}
}
import com.fasterxml.jackson.annotation.JsonProperty;
导入com.fasterxml.jackson.databind.ObjectMapper;
导入org.junit.Test;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.List;
导入java.util.stream.collector;
导入java.util.stream.stream;
公共级杰克逊特测试{
私有静态最终字符串JSON=“{\n”+
“结果”:“成功”,\n+
“\”消息\“:\”联系人列表\“,\n”+
“\“响应\”:[\n”+
“{\n”+
“\“id\”:1\n”+
“联系人姓名:\”胡安娜大厦“,\n”+
“\'numbers\:\”{24602555655545}\,\n”+
“\“电子邮件\”:\”{oipoa@gmaio.com,rst008@guan.com}\“\n”+
},\n+
“{\n”+
“\“id\”:2\n”+
“联系人姓名:\”LA MEJOR\“,\n”+
“\'numbers\:\”{2544587725845877}\“,\n”+
“\“电子邮件\”:\”{AMEJOR@GMAIL.COM}\“\n”+
“}\n”+
“]\n”+
"}";
@试验
public void testParsingJSONStringWithObjectMapper()引发IOException{
//鉴于:
最终ObjectMapper ObjectMapper=新ObjectMapper();
//当:
最终响应Response=objectMapper.readValue(JSON,Response.class);
//然后:
断言response.getMessage()等于(“Lista de Contactos”);
//以及:
断言response.getResult()等于(“成功”);
//以及:
断言response.getResponse().get(0.getId().equals(1);
//以及:
断言response.getResponse().get(0.getContactName().equals(“朱安娜大厦”);
//以及:
断言response.getResponse().get(0.getEmails().equals(Arrays.asList)()oipoa@gmaio.com", "rst008@guan.com"));
//以及:
断言response.getResponse().get(0.getNumbers().equals(Arrays.asList(24602555655545));
}
静态类响应{
私有字符串结果;
私有字符串消息;
私有列表响应=新建ArrayList();
公共字符串getResult(){
返回结果;
}
公共void setResult(字符串结果){
this.result=结果;
}
公共字符串getMessage(){
返回消息;
}
公共无效设置消息(字符串消息){
this.message=消息;
}
公共列表getResponse(){
返回响应;
}
公共无效设置响应(列表响应){
这个。反应=反应;
}
}
静态类数据{
私有字符串id;
@JsonProperty(“联系人姓名”)
私有字符串contactName;
私有字符串编号;
私人字符串电子邮件;
公共字符串getId(){
返回id;
}
公共无效集合id(字符串id){
this.id=id;
}
公共字符串getContactName(){
返回联系人姓名;
}
public void setContactName(字符串contactName){
this.contactName=联系人姓名;
}
公共列表getNumbers(){
返回流.of(numbers.replaceAll(“\\{”,”)
.replaceAll(“}”,”)
.拆分(“,”)
.map(整数::valueOf)
.collect(Collectors.toList());
}
公共无效集合编号(字符串编号){
这个。数字=数字;
}
公共列表getEmails(){
返回Arrays.asList(emails.replaceAll(“\\{”,”)
.replaceAll(“}”,”)
.拆分(“,”);
}
公用电子邮件(字符串电子邮件){
这个。电子邮件=电子邮件;
}
}
}
在本例中,我使用了您收到的相同JSON响应和jackson-core
library()将字符串映射到POJO(您可以使用InputStream、byte[]等代替字符串)。有两个POJO:响应
和数据
。Response聚合了数据
对象的列表。另外,Data
的getEmails()
和getNumbers()
方法解析您的输入字符串
set.stream().forEach(map -> {
System.out.print("Id:" + map.get("id") + "ContactName:" + map.get("contact_name"));
});
public void FunctionExample(ArrayList contacts) {
for(int i=0; i < contacts.size(); i++) {
LinkedTreeMap<String, Object> map = (LinkedTreeMap<String, Object>) contacts.get(i);
map.containsKey("id");
String id = (String) map.get("id");
map.containsKey("contact_name");
String contact_name = (String) map.get("contact_name");
map.containsKey("numbers");
String numbers = (String) map.get("numbers");
numbers.replace("{","").replace("}","");
map.containsKey("emails");
String emails = (String) map.get("emails");
emails.replace("{","").replace("}","");
Snackbar.make(getView(), id, Snackbar.LENGTH_LONG).show();
Snackbar.make(getView(), contact_name, Snackbar.LENGTH_LONG).show();
Snackbar.make(getView(), numbers, Snackbar.LENGTH_LONG).show();
Snackbar.make(getView(), emails, Snackbar.LENGTH_LONG).show();
}
}