Java基础之集合

Java集合之Collection接口

1.为什么会有集合?

针对数组中的一些缺陷而设计的集合

1.数组的长度一经确定无法更改

2.数组中数组元素增加、修改、删除方法没有,导致效率过低

​​​​​3.数组中没有返回数组元素个数的方法

4.数组是有序的、可重复的,无法解决无序、不可重复的问题

2.Collection作为set、list顶级接口,下面将介绍一些常用的方法

1.add(Object obj):添加obj元素

@Test
	public void test1() {
		// 1.add(Object obj)
		Collection coll=new ArrayList();
		coll.add(123);
		coll.add("abc");
		System.out.println(coll);
	}

2.addAll(Collection c):添加集合c

@Test
	public void test1() {
		//2.addAll(Collection c)
		Collection coll=new ArrayList();
		coll.add(123);
		coll.add("abc");
		Collection c1=new ArrayList();
		c1.add(456);
		c1.add("def");
		coll.addAll(c1);
		System.out.println(coll);
	}

3.equals(Objdect o):比较两个对象是否相等

        //2.addAll(Collection c)
		Collection coll=new ArrayList();
		coll.add(123);
		coll.add("abc");
		Collection c1=new ArrayList();
		c1.add(456);
		c1.add("def");
		coll.addAll(c1);
		System.out.println(coll);
		//3.equals(Objcet o):比较两个对象的内容是否相等		
        Collection c2=new ArrayList();
		c2.addAll(coll);
		System.out.println(c2.equals(coll));

4.isEmpty():判断是否为空,是返回true

        //2.addAll(Collection c)
		Collection coll=new ArrayList();
		coll.add(123);
		coll.add("abc");
		Collection c1=new ArrayList();
		c1.add(456);
		c1.add("def");
		coll.addAll(c1);
		System.out.println(coll);
		//3.equals(Objcet o):比较两个对象的内容是否相等
		Collection c2=new ArrayList();
		c2.addAll(coll);
		System.out.println(c2.equals(coll));
		//4.isEmpty():判断是否为空,为空返回true
		System.out.println(c2.isEmpty());

5.hashCode():返回一个哈希值

        //2.addAll(Collection c)
		Collection coll=new ArrayList();
		coll.add(123);
		coll.add("abc");
		Collection c1=new ArrayList();
		c1.add(456);
		c1.add("def");
		coll.addAll(c1);
		System.out.println(coll);
		//3.equals(Objcet o):比较两个对象的内容是否相等
		Collection c2=new ArrayList();
		c2.addAll(coll);
		System.out.println(c2.equals(coll));
		//4.isEmpty():判断是否为空,为空返回true
		System.out.println(c2.isEmpty());
		//5.hashCode():返回一个hashCode编码
		System.out.println(c2.hashCode());

6.contains(Object o):是否包含o,是返回true

    @Test
	public void test2() {
		Collection coll=new ArrayList();
		coll.add(123);
		coll.add("abc");
		// contains(Object o):使用当前的类的equals方法比较是否包含
		System.out.println(coll.contains(123)); //使用包装类Integer中重写的equals方法进行比较
		coll.add(new Student("小明",18));
		System.out.println(coll.contains(new Student("小明",18)));//自定义类重写equals方法之        后为true,否则为false
		coll.add(new Animal("cat",3));
		System.out.println(coll.contains(new Animal("cat",3)));

class Animal{
	private String name;
	private int age;
	
	public Animal(String name, int age) {
		super();
		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 "Animal [name=" + name + ", age=" + age + "]";
	}
	
	
}
class Student{
	private String name;
	private int age;
	
	public Student(String name, int age) {
		super();
		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 "Student [name=" + name + ", age=" + age + "]";
	}
//	@Override
//	public int hashCode() {
//		return Objects.hash(age, name);
//	}
	@Override
	public boolean equals(Object obj) {
        System.out.println("使用了Student类中的equals方法");
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		return age == other.age && Objects.equals(name, other.name);
	}
	
}

7.containsAll(Collection c):是否含有集合c,同样使用当前类的equals方法进行判断

        //containsAll(Collection c):含有c返回true
		Collection coll=new ArrayList();
		coll.add(123);
		coll.add("abc");
		Collection c1=new ArrayList();
		c1.add(123);
		c1.add("abc");
		System.out.println(coll.containsAll(c1));
		Collection c2=new ArrayList();
		c2.add(123);
		c2.add("abc");
		c2.add(new Student("小明",18));
		System.out.println(coll.containsAll(c2));
		coll.add(new Student("小明",18));
		System.out.println(coll.containsAll(c2));

8.remove(Objcet o):删除对象o,调用当前类的equals方法进行判断

@Test
	public void test4() {
		//remove(Objcet o):删除对象o
		Collection coll=new ArrayList();
		coll.add(123);
		coll.add("abc");
		coll.remove(123);  //同样,调用了Integer中的equals方法进行判断
		System.out.println(coll);
		coll.add(new Student("小明",18));
		System.out.println(coll);
		coll.remove(new Student("小明",18));
		System.out.println(coll); //调用Student类中的equals方法进行判断
		coll.add(new Animal("Cat",3));
		System.out.println(coll);
		coll.remove(new Animal("Cat",3));
		System.out.println(coll);
	}

9.removeAll(Collection c):删除集合c,同样调用当前类的equals的方法进行判断

@Test
	public void test4() {
	 //removeAll(Objcet o)
		Collection coll=new ArrayList();
		coll.add(123);
		coll.add("abc");
		coll.add(new Student("小明",18));
		Collection c1=new ArrayList();
		c1.add(123);
		c1.add("abc");
		c1.add(new Student("小明",18));
		coll.removeAll(c1);
		System.out.println(coll);
		System.out.println("******************");
		Collection c2=new ArrayList();
		c2.add(123);
		c2.add("abc");
		c2.add(new Animal("Cat",3));
		Collection c3=new ArrayList();
		c3.add(123);
		c3.add("abc");
		c3.add(new Animal("Cat",3));
		c2.removeAll(c3);
		System.out.println(c2);
	}

10.retainAll(Collection c):保留与c的交集

@Test
	public void test5() {
		// retainAll(Collection c):
		Collection coll=new ArrayList();
		coll.add(123);
		coll.add("abc");
		coll.add(new Student("小明",18));
		Collection c1=new ArrayList();
		c1.add(123);
		coll.retainAll(c1);
		System.out.println(coll);
	}

11.size():返回实际添加元素的个数

@Test
	public void test5() {
		// retainAll(Collection c):
		Collection coll=new ArrayList();
		coll.add(123);
		coll.add("abc");
		coll.add(new Student("小明",18));
		Collection c1=new ArrayList();
		c1.add(123);
		coll.retainAll(c1);
		System.out.println(coll);
		//size()
		System.out.println(coll.size());
	}

12.toArray():将Collection转化为数组

@Test
	public void test6() {
		//toArray():Collection -> Array
		Collection coll=new ArrayList();
		coll.add(123);
		coll.add("abc");
		coll.add(new Student("小明",18));
		Object [] o=coll.toArray();
		System.out.println(Arrays.toString(o));
		//asList(): Array -> Collection
		List<Object> list=Arrays.asList(o);
		System.out.println(list);
	}

13.clear():删除所有元素

@Test
	public void test6() {
		//toArray():Collection -> Array
		Collection coll=new ArrayList();
		coll.add(123);
		coll.add("abc");
		coll.add(new Student("小明",18));
		Object [] o=coll.toArray();
		System.out.println(Arrays.toString(o));
		//asList(): Array -> Collection
		List<Object> list=Arrays.asList(o);
		System.out.println(list);
		//clear():删除所有元素
		list.clear();
		System.out.println(list);
	}

14.使用迭代器进行集合的遍历

@Test
	public void test7() {
		// 使用Iterator迭代器进行集合的遍历
		Collection coll=new ArrayList();
		coll.add(123);
		coll.add("abc");
		coll.add(new Student("小明",18));
		Iterator iterator=coll.iterator();
		//Iterator中有两个方法:1.hasNext():判断下个元素是否存在 2.next():返回下一个元素
		while(iterator.hasNext()) {
			System.out.print(iterator.next()+"\t");
		}
		Iterator iterator1=coll.iterator();
		while(iterator1.hasNext()) {
			Object o=iterator1.next();
			if("abc".equals(o)) {
				iterator1.remove(); //remove方法删除次元素
			}
		}
		System.out.println();
		Iterator iterator2=coll.iterator();
		while(iterator2.hasNext()) {
			System.out.print(iterator2.next()+"\t");
		}
	}

如果Iterator中的remove()方法放在了 :next()方法前面 或者 重复使用了都会报错

while(iterator1.hasNext()) {
			iterator1.remove();
			Object o=iterator1.next();
			if("abc".equals(o)) {
				iterator1.remove();
				iterator1.remove();
			}
		}

15.foreach:增强for循环

@Test
	public void test8() {
		//foreach 增强for循环
		Collection coll=new ArrayList();
		coll.add(123);
		coll.add("abc");
		coll.add(new Student("小明",18));
		for(Object o:coll) {
			System.out.print(o+"\t");
		}
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值