首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想获取带有ids列表的ArrayList中的元素

我想获取带有ids列表的ArrayList中的元素
EN

Stack Overflow用户
提问于 2013-06-14 14:35:06
回答 2查看 939关注 0票数 1

我有一个ArrayList<UIToto>,每个UIToto都包含

代码语言:javascript
复制
(String id, String name, String info)

例如

代码语言:javascript
复制
(4546-fdsf4545sfd-dfs545, titi, female)
(dqs4d65q4-45d4s54545sfd-dfss54545, tutu, male)

我有一个ids列表,比如

代码语言:javascript
复制
String ids = "dqs4d65q4-45d4s54545sfd-dfss54545, 4545-dsqd45-dqs,4d5s44-ss4-dqsd";

对于每个id,我检索id,并希望在我的ArrayList中获得UIToto:

代码语言:javascript
复制
ArrayList<UIToto> totoList = retrieveTotoList();
String[] ids = "dqs4d65q4-45d4s54545sfd-dfss54545, 4545-dsqd45-dqs,4d5s44-ss4-dqsd";
for(int i=0; i <= ids.length; i++) {
    System.out.println(("id = " + ids[i]);
    //don't work because it's not the index but the id ...
UIToto response = totoList.get(Integer.parseInt(ids[1]));
System.out.println("response = " + response);
 }

有可能吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-14 14:41:08

试一试

代码语言:javascript
复制
ArrayList<UIToto> totoList = retrieveTotoList;
ArrayList<UIToto> resultList= new ArrayList<UIToto>();

String[] ids = {"dqs4d65q4-45d4s54545sfd-dfss54545", 
                "4545-dsqd45-dqs,4d5s44-ss4-dqsd"}; 

for(int i = 0; i < ids.length; i++) {
    for(UIToto uIToto : totoList) {
        if(uIToto.getId().equals(ids[i])) {
            resultList.add(uIToto);     
        }
    }
}
票数 2
EN

Stack Overflow用户

发布于 2013-06-14 15:17:45

根据您的用例,当您需要根据对象的某个值在集合中查找对象时,以string-id为键的Map可能比arrayList更优雅。

代码语言:javascript
复制
public static void main(String argv) {
    Map<String, UIToto> totoMap = getTotoMap();
    String[] ids = {"dqs4d65q4-45d4s54545sfd-dfss54545", "4545-dsqd45-dqs,4d5s44-ss4-dqsd"};
    for(int i=0; i <= ids.length; i++) {
        System.out.println(("id = " + ids[i]));

        UIToto response = totoMap.get(ids[i]);
        System.out.println("response = " + response);
    }
}

//Example how to Construct the map with the String as ID. 
//Ideally the map would be constructed without first creating the list
public Map<String,UIToto> getTotoMap() {
    Map<String, UIToto> totoMap = new HashMap<String, UIToto>();
    List<UIToto> totoList = retrieveTotoList();
    for (UIToto uiToto :totoList) {
        totoMap.put(uiToto.getId(), uiToto);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17102466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档