/*
contains方法
结论:存放在集合中的类型重写了equals方法
*/importjava.util.Collection;importjava.util.LinkedList;importjava.util.Objects;publicclassTest01{publicstaticvoidmain(String[] args){Collection c =newLinkedList();
c.add(newString("abc"));
c.add(newString("def"));System.out.println("元素个数:"+c.size());String s =newString("abc");System.out.println(c.contains(s));//底层调用equals()方法判断,比较的是内容,故返回trueUser u1 =newUser("jack");User u2 =newUser("jack");
c.add(u1);System.out.println(c.contains(u2));//没有重写equals()时,返回false//重写equals()时,返回true}}classUser{privateString name;publicUser(){}publicUser(String name){this.name = name;}@Overridepublicbooleanequals(Object o){if(o ==null||!(o instanceofUser))returnfalse;if(o ==this)returntrue;//内存地址相同User user =(User) o;return user.name.equals(this.name);//比较内容}}
2.remove方法
同contains方法,调用重写后的equals方法,删除内容相同的数据
3.List接口中常用方法
/*
List接口常用方法
void add(int index,E element)
E get(int index)
int indexOf(Object o)
int lastIndexOf(Object o)
E remove(int index)
*/publicclassTest02{publicstaticvoidmain(String[] args){List l =newArrayList();
l.add(1);
l.add("hello");
l.add('A');
l.add("b");
l.add('A');//效率比较低
l.add(1,"sad");Iterator it = l.iterator();while(it.hasNext()){System.out.println(it.next());}System.out.println("---------------------");//根据下标获取元素System.out.println(l.get(2));System.out.println("---------------------");//获取指定对象第一次出现的索引System.out.println(l.indexOf("b"));System.out.println("---------------------");//获取指定对象最后一次出现的索引System.out.println(l.lastIndexOf('A'));System.out.println("---------------------");//删除指定位置的元素System.out.println(l.remove(0));System.out.println(l.size());//修改指定位置的元素
l.set(2,"world");for(int i =0; i < l.size(); i++){System.out.println(l.get(i));}}}
/*
1.什么是泛型方法
这个方法的泛型的参数类型要和当前类的泛型无关
2.泛型方法是否可以是静态方法?可以
*/publicclassTest06<E>{//不是泛型方法publicvoida(E e){}//是泛型方法publicstatic<T>voidb(T t){}//错误,重复定义,参数属于并列关系/*public void c(List<Object> list){
}
public void c(List<String> list){
}
public void c(List<Integer> list){
}*/}class demo{publicstaticvoidmain(String[] args){Test06<String> t =newTest06<>();
t.a("abc");
t.b("cdcd");//T的类型是在调用方法时确定的
t.b(656);}}
6.5通配符
publicclassTest07{publicstaticvoidmain(String[] args){List<Object> list1 =newArrayList<>();List<String> list2 =newArrayList<>();List<Integer> list3 =newArrayList<>();List<?> list =null;//通配符
list = list1;
list = list2;
list = list3;}}
集合21.contains方法/*contains方法结论:存放在集合中的类型重写了equals方法 */import java.util.Collection;import java.util.LinkedList;import java.util.Objects;public class Test01 { public static void main(String[] args) { Collection c = new LinkedList();