package com.wanjin.jihe; import org.junit.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; /** * Collection接口中声明的方法的测试 * * 向Collection接口的实现类的对象中添加数据obj时,要求obj所在类要重写equals(). * @author shkstart * @create 2021.10.1 * */ public class CollectionTest { @Test public void test1(){ Collection coll=new ArrayList(); coll.add(123); coll.add(456); coll.add(new String("Tom")); coll.add(false); // Person p=new Person("Jerry",20); // coll.contains(p); coll.add(new Person("Jerry",20)); //Contains(Object obj):判断当前集合中是否包含obj //我们在判断时会调用obj对象所在类的equals() boolean contains = coll.contains(123);//true System.out.println(contains);//true // System.out.println(coll.contains(p)); //true System.out.println(coll.contains(new String("Tom")));//true System.out.println(coll.contains(new Person("Jerry",20)));//false-->true System.out.println("==============================================="); //在Person类中Alt+INS equals() and hashcode() //2.containsAll(containsAll coll1):判断形参coll1中的所有元素是否都存在于当前集合中 Collection coll1= Arrays.asList(123,456); // Arrays.asList方法是将数组转化成List集合的方法。 System.out.println(coll.containsAll(coll1)); } @Test public void test2(){ //3.remove(Object obj):从当前集合中移除obj元素。 Collection coll=new ArrayList(); coll.add(123); coll.add(456); coll.add(new String("Tom")); coll.add(false); coll.add(new Person("Jerry",20)); coll.remove(123); //删除掉123 System.out.println(coll); coll.remove(new Person("Jerry",20)); System.out.println(coll); //4.removeAll(Collection coll1):差集:从当前集合中移除coll1中所有的元素 Collection coll1=Arrays.asList(123,456);//删除掉123,456 coll.removeAll(coll1); System.out.println(coll); } @Test public void test3() { Collection coll = new ArrayList(); coll.add(123); coll.add(456); coll.add(new String("Tom")); coll.add(false); coll.add(new Person("Jerry", 20)); //5.retainAll(Collection coll1):交集:获取当前集合和coll1集合的交集,并返回给当前集合(保留一样的,删掉不一样的) // Collection coll1=Arrays.asList(123,456,789); // coll.retainAll(coll1); // System.out.println(coll); // //6.equals(Object obj):要想返回true,需要当前集合和形参集合的元素都相同,若是ArrayList,则顺序也要相同 Collection coll1=new ArrayList(); coll1.add(123); coll1.add(456); coll1.add(new String("Tom")); coll1.add(false); coll1.add(new Person("Jerry",20)); System.out.println(coll.equals(coll1)); } @Test public void test4() { Collection coll = new ArrayList(); coll.add(123); coll.add(456); coll.add(new String("Tom")); coll.add(false); coll.add(new Person("Jerry", 20)); //7.hashCode():返回当前对象的哈希值 System.out.println(coll.hashCode()); //8.集合----->数组:toArray() Object[] arr = coll.toArray(); for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); } //扩展:数组--->集合:调用Arrays类的静态方法asList() List<String> list = Arrays.asList(new String[]{"AA", "BB", "CC"}); System.out.println(list); // List<int[]> arr1 = Arrays.asList(new int[]{123, 456});//这样写的话new int[]{123, 456}会被当成是一个元素 List arr1 = Arrays.asList(123, 456); System.out.println(arr1); List arr2 = Arrays.asList(new Integer[]{123,456});//可以写成这样 System.out.println(arr2); //9.iterator():返回Iterator接口的实例,用于遍历集合元素。放在IteratorTest.java中 } }
package com.wanjin.jihe;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collection;
/**
* 集合元素的遍历操作,使用迭代器Iterator接口
*内部的方法:hasnext()和next()搭配使用
*
* @author shkstart
* create 2021.10.2
*
* */
public class Iterator {
@Test
public void test1(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new String("Tom"));
coll.add(false);
coll.add(new Person("Jerry", 20));
java.util.Iterator iterator = coll.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next()); //迭代器,输出coll集合中所有元素
}
}
@Test
public void test2() {
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new String("Tom"));
coll.add(false);
coll.add(new Person("Jerry", 20));
java.util.Iterator iterator = coll.iterator();
//错误方式:集合对象每次调用iterator()方法都会得到一个全新的迭代器对象,默认游标都在集合的第一个,所以此方法会陷入一直输出123的死循环
while(coll.iterator().hasNext()){
System.out.println(coll.iterator().next());
}
}
@Test
public void test3() {
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new String("Tom"));
coll.add(false);
coll.add(new Person("Jerry", 20));
//删除集合中"Tom"
java.util.Iterator iterator = coll.iterator();
while(iterator.hasNext()){
Object obj =iterator.next();
if("Tom".equals(obj)){
iterator.remove(); //内部定义了一个remove方法,可以在遍历的时候,删除集合中的元素,此方法不同于集合直接调用remove
}
}
iterator=coll.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
package com.wanjin.jihe;
import java.util.Objects;
/**
* Collection接口中声明的方法的测试
*
* @author shkstart
* @create 2021.10.1
* */
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public boolean equals(Object o) {
System.out.println("Person equals().....");
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
// @Override
// public int hashCode() {
// return Objects.hash(name, age);
// }
}