Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 迭代数组列表_Java_Android_Arraylist - Fatal编程技术网

Java 迭代数组列表

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

我想知道迭代此ArrayList的最佳方法,此ArrayList来自API的响应,这是ArrayList:

问题是我不知道如何从循环中获取“id”和“value”, 我知道arraylist的大小,但是我不知道如何从这个数组中打印“键”和“值”

        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(); 

  }
}