黑马程序员技术交流社区
标题:
ArrayList
[打印本页]
作者:
微笑=.一瞬间
时间:
2014-4-20 14:56
标题:
ArrayList
程序:
import java.util.*;
class MyTestArratList
{
public static void main(String[] args)
{
ArrayList al=new ArrayList();
al.add("java1");
al.add("java2");
al.add("java3");
al.add("java4");
al.add("java1");
Iterator it=al.iterator();
ArrayList newAl=new ArrayList();
while(it.hasNext())
{
Object obj=it.next();
if(!newAl.contains(obj))
{
newAl.add(obj);
System.out.println(obj);
}
}
}
}
请问if语句contains方法调用的String类中的equals方法还是Object类中的equals方法呢?
作者:
。烊了
时间:
2014-4-20 15:12
是object的
作者:
苍穹的雨
时间:
2014-4-20 15:25
Object的方法,因为你有:Object obj=it.next();这就表明的obj是Object类型的,如果想调用String中的方法的话,你就需要吧那句改成:String obj=(String)it.next();
最后建议你学过泛型的话最好用泛型来写吧
作者:
向日葵的曙光
时间:
2014-4-21 16:49
肯定是Object中的方法呀,,必须还要重写equals方法,这是我个人总结的List集合的一些技巧
主要总结了List集合宗去掉重复元素与排序(包括自然排序与自定义比较器排序),希望对你有帮助呀
package com.cg.test;
/*
* List集合去除重复元素的方法,并且进行对指定比较器进行排序
* */
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
class Student implements Comparable<Student>{
public String name;
public int age;
Student(String name,int age) {
this.name=name;
this.age=age;
}
public boolean equals(Object o1){
if(!(o1 instanceof Student))
return false;
Student s=(Student)o1;
return this.name.equals(s.name)&&this.age==s.age;
}
public int compareTo(Student o) {
int num=this.age-o.age;
return num==0?this.name.compareTo(o.name):num;
}
}
class MyComparator implements Comparator<Student>{
public int compare(Student o1, Student o2) {
int num=o1.name.compareTo(o2.name);
return num==0 ? o1.age-o2.age:num;
}
}
public class CollectionsDemo {
public static void main(String[] args) {
showArrayList();
}
public static void showArrayList(){
LinkedList<Student> alList=new LinkedList<Student>();
//List<Student> alList=new ArrayList<Student>();
alList.add(new Student("zhangsan",20));
alList.add(new Student("lisi002",22));
alList.add(new Student("lisi004",23));
alList.add(new Student("lisi001",21));
alList.add(new Student("lisi004",23));
alList.add(new Student("lisi001",21));
alList=singleArray(alList);
Collections.sort(alList,new MyComparator());
Iterator<Student> it=alList.iterator();
while(it.hasNext()){
Student s=it.next();
System.out.println(s.name+"::"+s.age);
}
}
public static LinkedList<Student> singleArray(LinkedList<Student> alList){
LinkedList<Student> newal=new LinkedList<Student>();
Iterator<Student> it=alList.iterator();
while(it.hasNext()){
Student s=it.next();
while(!newal.contains(s)){
newal.add(s);
}
}
return newal;
}
}
复制代码
去重复与排序问题List集合通用哦
作者:
Silvester
时间:
2014-4-21 18:07
Object的方法。
查阅了ArrayList对应的API后,contains方法给出的注释是:
“public boolean contains(Object o)
如果此列表中包含指定的元素,则返回 true。更确切地讲,当且仅当此列表包含至少一个满足 (o==null ? e==null : o.equals(e)) 的元素 e 时,则返回 true。 ”
因为传入的参数o是Object类,o.equals(e)为Object的eequals.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2