当使用Java将解析后的JSON推送到映射中时,如何在映射中显示重复的值以显示为列表项。地图<;字符串,设置字符串>;

当使用Java将解析后的JSON推送到映射中时,如何在映射中显示重复的值以显示为列表项。地图<;字符串,设置字符串>;,java,android,json,Java,Android,Json,我有两个不同的“想法”共享同一个url我需要两个url都显示当前我只能看到其中一个重复的url。如何将它们分别设置为“专业”,从而显示两个URL? 另外,我正在从一个静态Json页面解析这些数据,我知道使用集合过滤器是重复的,所以我想单独调用每个项,因为我必须在这个任务中使用集合 谢谢你的帮助 public String loadJSON() { String json = null; try { InputStream is = getActivity().g

我有两个不同的“想法”共享同一个url我需要两个url都显示当前我只能看到其中一个重复的url。如何将它们分别设置为“专业”,从而显示两个URL?
另外,我正在从一个静态Json页面解析这些数据,我知道使用集合过滤器是重复的,所以我想单独调用每个项,因为我必须在这个任务中使用集合

谢谢你的帮助

public String loadJSON() {
    String json = null;

    try {
        InputStream is = getActivity().getAssets().open("parse.json");
        int size = is.available();
        byte[] buffer = new byte[size];
        is.read(buffer);
        is.close();
        json = new String(buffer, "UTF-8");
    } catch (IOException ex) {
        ex.printStackTrace();
        return null;
    }
    return json;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    int image[] = {R.drawable.1, R.drawable.2, R.drawable.3,
        R.drawable.4, R.drawable.5, R.drawable.6};

    try {
        JSONObject object = new JSONObject(loadJSON());
        JSONArray array = object.getJSONArray("gig");

        for (int i =0; i <array.length(); i++) {
            JSONObject obj_inside = array.getJSONObject(i);
            String idea = obj_inside.getString("id");
            JSONArray contents = obj_inside.getJSONArray("cont");

            for (int j =0; j < contents.length(); j++) {
                int ran_image = image[((int) (image.length * Math.random()))];
                JSONObject jsonObject = contents.getJSONObject(j);
                String contT = jsonObject.getString("contT");
                String campU = jsonObject.getString("campU");

                Map<String,Collection<String>> map=new HashMap<String,             Collection<String>>();
            Set<String> url = new HashSet<String>();
            url.add(campU);
            map.put(idea, url);
            System.out.println(map.toString());
            }
        }
    }
}
publicstringloadjson(){
字符串json=null;
试一试{
InputStream=getActivity().getAssets().open(“parse.json”);
int size=is.available();
字节[]缓冲区=新字节[大小];
is.read(缓冲区);
is.close();
json=新字符串(缓冲区,“UTF-8”);
}捕获(IOEX异常){
例如printStackTrace();
返回null;
}
返回json;
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
int image[]={R.drawable.1,R.drawable.2,R.drawable.3,
R.drawable.4,R.drawable.5,R.drawable.6};
试一试{
JSONObject对象=新的JSONObject(loadJSON());
JSONArray数组=object.getJSONArray(“gig”);

对于(int i=0;i您可以尝试使用
Map

Map Map=newhashmap();
列表url=新的ArrayList();
add(新字符串(“str1”);
add(新字符串(“str1”);
map.put(“,url);

这样,您就可以灵活地在地图中放置列表或设置为值

为什么要使用Set,为什么不使用List?这些都是给我的要求,我可以使用List并仍然使用地图的设置吗?不,您不能在地图中添加List对象。在您的案例中,我认为使用集合是为了json转换。尽管设置represents JsonArray,List也对应于JsonArray,所以我认为如果它不妨碍其他任何事情,你应该使用List。我希望使用List而不是Set,但是当我这样做时,它会导致整个程序尝试迁移已经声明为这样的预写代码。不过,如果你想到任何方法,谢谢你的帮助这对我来说是非常有价值的:-)我刚刚尝试了它,它给了我一个错误,因为我正在将url设置在一个我已经声明为Set的位置,当我强制转换它时,它给了我一个强制转换异常java.lang.ClassCastException:java.util.ArrayList不能强制转换为java.util.Set我想这可能会起作用,但是我如何将这个映射设置到我的列表项,我有一个显示为s的列表uch ListItem li=new ListItem();li=new ListItem();li.name=contT;li.image=ran\u image;li.url=campU;listItems.put(li.url,li);url.add(li.url);在显示时,它仍在消除重复值。请在代码中显示,它给了我一个异常,java.lang.ClassCastException:java.util.ArrayList不能转换为java.util.Setuse Map,而不是MapMapMap=new HashMap();Set url=new HashSet();url.add(campU);map.put(idea,url);System.out.println(map.toString());我就是这样得到它的,当我使用list而不是Set时,它会导致一个异常。我将url设置在一个我已经声明设置的位置
         Map<String,Collection<String>> map=new HashMap<String, Collection<String>>();
         List<String> url = new ArrayList<String>();
         url.add(new String("str1"));
         url.add(new String("str1"));
         map.put("", url);