Java ArrayList删除重复元素

Java ArrayList删除重复元素,java,android,json,arraylist,Java,Android,Json,Arraylist,我正在使用ArrayList将JSON数据解析到ListView中,现在我想知道如何在将其填充到ListView中之前从ArrayList中删除重复的条目 这是我的JSON: { "data": [ { "city": "Delhi" }, { "city": "Mumbai" }, { "city": "Delhi" }, { "city": "Mumbai" } ]

我正在使用
ArrayList
将JSON数据解析到ListView中,现在我想知道如何
在将其填充到
ListView
中之前从ArrayList中删除重复的
条目

这是我的JSON

{
  "data": [
    {
      "city": "Delhi"
    },
    {
      "city": "Mumbai"
    },
    {
      "city": "Delhi"
    },
    {
      "city": "Mumbai"
    }    
  ]
}

MainActivity.java

public class MainActivity extends Activity {

    ArrayList<Destination> destinationArrayList;    
    MainAdapter adapter;
    EditText editText;
    Destination destination;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = (EditText) findViewById(R.id.editLocation);

        destinationArrayList = new ArrayList<Destination>();

        new JSONAsyncTask().execute("my api link");

        ListView listview = (ListView)findViewById(R.id.list);
        adapter = new MainAdapter(getApplicationContext(), R.layout.row, destinationArrayList);

        listview.setAdapter(adapter);                       
    }


    class JSONAsyncTask extends AsyncTask<String, Void, Boolean> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected Boolean doInBackground(String... urls) {
            try {
                ....
                if (status == 200) {
                    HttpEntity entity = response.getEntity();
                    String data = EntityUtils.toString(entity);

                    JSONObject jsono = new JSONObject(data);
                    JSONArray jarray = jsono.getJSONArray("data");

                    for (int i = 0; i < jarray.length(); i++) {
                        JSONObject object = jarray.getJSONObject(i);

                        destination = new Destination();                                                
                        destination.setCity(object.getString("city"));                          
                        destinationArrayList.add(destination);

                    }
                    return true;
                }

            ......
            return false;
        }

        protected void onPostExecute(Boolean result) {
            adapter.notifyDataSetChanged();             
        }
    }

}
公共类MainActivity扩展活动{
ArrayList destinationArrayList;
主适配器;
编辑文本编辑文本;
目的地;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText=(editText)findViewById(R.id.editLocation);
destinationArrayList=新ArrayList();
新建JSONAsyncTask().execute(“我的api链接”);
ListView ListView=(ListView)findViewById(R.id.list);
adapter=新的主适配器(getApplicationContext(),R.layout.row,destinationArrayList);
setAdapter(适配器);
}
类JSONAsyncTask扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的布尔doInBackground(字符串…URL){
试一试{
....
如果(状态==200){
HttpEntity=response.getEntity();
字符串数据=EntityUtils.toString(实体);
JSONObject jsono=新的JSONObject(数据);
JSONArray jarray=jsono.getJSONArray(“数据”);
for(int i=0;i
保留城市名称的
集合。当您看到每个城市时,将其添加到集合中,然后仅当
Set.add(…)
方法返回true时才将其添加到列表中(从而指示它已添加到集合中,这意味着它以前不存在,这意味着这是您第一次看到这个城市).

保留城市名称的
集合。当您看到每个城市时,将其添加到集合中,然后仅当
Set.add(…)
方法返回true时才将其添加到列表中(从而指示它已添加到集合中,这意味着它以前不存在,这意味着这是您第一次看到这个城市).

您可以将ArrayList传递到HashSet中,重复的元素将被处理。

您可以将ArrayList传递到HashSet中,重复的元素将被处理。

如果您使用
HashSet
它将删除重复的元素:

HashSet<string> hashset = new HashSet<>(destinationArrayList);
HashSet HashSet=newhashset(destinationArrayList);

hashset
将有一个唯一的列表

如果使用
hashset
它将删除重复项:

HashSet<string> hashset = new HashSet<>(destinationArrayList);
HashSet HashSet=newhashset(destinationArrayList);
hashset
将有一个唯一的列表

使用此

HashSet<String> hs=new HashSet<>(list);
HashSet hs=新的HashSet(列表);
使用此

HashSet<String> hs=new HashSet<>(list);
HashSet hs=新的HashSet(列表);
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText=(editText)findViewById(R.id.editLocation);
destinationArrayList=新ArrayList();
新建JSONAsyncTask().execute(“我的api链接”);
Set hs=新的HashSet();
hs.addAll(destinationArrayList);
destinationArrayList.clear();
destinationArrayList.addAll(hs);
ListView ListView=(ListView)findViewById(R.id.list);
adapter=新的主适配器(getApplicationContext(),R.layout.row,destinationArrayList);
setAdapter(适配器);
}    
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText=(editText)findViewById(R.id.editLocation);
destinationArrayList=新ArrayList();
新建JSONAsyncTask().execute(“我的api链接”);
Set hs=新的HashSet();
hs.addAll(destinationArrayList);
destinationArrayList.clear();
destinationArrayList.addAll(hs);
ListView ListView=(ListView)findViewById(R.id.list);
adapter=新的主适配器(getApplicationContext(),R.layout.row,destinationArrayList);
setAdapter(适配器);
}    
你能试试这个吗

public static void main( String[] args )
{

    List<String> withDuplicatesCities = new ArrayList<String>();
    withDuplicatesCities.add( "Dehli" );
    withDuplicatesCities.add( "Mumbai" );
    withDuplicatesCities.add( "Dehli" );
    withDuplicatesCities.add( "Mumbai" );

    List<String> withoutDuplicates = removeDuplicates( withDuplicatesCities );
    System.out.println( withoutDuplicates );

}

private static List<String> removeDuplicates( List<String> withDuplicatesCities )
{
    Set<String> set = new TreeSet<String>();
    List<String> newList = new ArrayList<String>();

    for( String city : withDuplicatesCities )
    {
        set.add( city );
    }
    newList.addAll( set );

    return newList;
}
publicstaticvoidmain(字符串[]args)
{
List withDuplicatesCities=new ArrayList();
随附副本。添加(“Dehli”);
添加(“孟买”);
随附副本。添加(“Dehli”);
添加(“孟买”);
列表无重复项=移除的重复项(有重复项);
System.out.println(无副本);
}
移除的私有静态列表副本(具有副本的列表)
{
Set=新树集();
List newList=newarraylist();
for(字符串城市:带重复项)
{
集合。添加(城市);
}
newList.addAll(集合);
返回newList;
}
你能试试这个吗

public static void main( String[] args )
{

    List<String> withDuplicatesCities = new ArrayList<String>();
    withDuplicatesCities.add( "Dehli" );
    withDuplicatesCities.add( "Mumbai" );
    withDuplicatesCities.add( "Dehli" );
    withDuplicatesCities.add( "Mumbai" );

    List<String> withoutDuplicates = removeDuplicates( withDuplicatesCities );
    System.out.println( withoutDuplicates );

}

private static List<String> removeDuplicates( List<String> withDuplicatesCities )
{
    Set<String> set = new TreeSet<String>();
    List<String> newList = new ArrayList<String>();

    for( String city : withDuplicatesCities )
    {
        set.add( city );
    }
    newList.addAll( set );

    return newList;
}
publicstaticvoidmain(字符串[]args)
{
List withDuplicatesCities=new ArrayList();
随附副本。添加(“Dehli”);
添加(“孟买”);
随附副本。添加(“Dehli”);
添加(“孟买”);
列表无重复项=移除的重复项(有重复项);
System.out.println(不带