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(不带