Java集合

1. 数组的局限

2. 集合

对比

3. collection

 

 

package com.qf.demo02;

import java.util.ArrayList;
import java.util.Collection;

public class Test5Collection {

	public static void main(String[] args) {
		//step1:创建一个集合容器
		Collection c1 = new ArrayList();
		System.out.println(c1);
		System.out.println(c1.size());//0
		//step2:操作这个集合容器
		//1.向容器中,添加一个元素
		c1.add("abc");//String-->Object
		System.out.println(c1.size());//1
		c1.add("hello");
		c1.add(100);//int-->Integer-->Object
		//2.打印容器的时候,直接显示容器中存储的元素数据
		System.out.println(c1);//[abc, hello, 100]
		//3.集合的长度:集合中存储的元素的个数
		System.out.println(c1.size());//3

		//4.删除集合中的元素
		c1.remove("abc");
		System.out.println(c1);//[hello, 100]
		System.out.println(c1.size());//2
		
		//5.是否包含指定的内容:
		System.out.println(c1.contains("hello"));//true
		
		//6.清空集合
		c1.clear();
		System.out.println(c1);//[]
		System.out.println(c1.size());//0
		System.out.println("c1是空的。。"+c1.isEmpty());
		c1.add("hello");
		c1.add("world");
		System.out.println("c1是空的。。"+c1.isEmpty());
			
		Collection c2 = new ArrayList();
		c2.add("aaa");
		c2.add("bbb");
		c2.add("ccc");
		
		System.out.println(c1);
		System.out.println(c2);
		
		//7.将c2容器中的所有元素,都添加到c1中。
		c1.addAll(c2);
		System.out.println(c1);//[hello, world, aaa, bbb, ccc]
		System.out.println(c2);//[aaa, bbb, ccc]
		//8.从c1中删除所有c2的元素
//		c1.removeAll(c2);
//		System.out.println(c1);//[hello, world]
//		System.out.println(c2);//[aaa, bbb, ccc]
		
		c1.add(100);
		c1.add("haha");
		System.out.println(c1);//[hello, world, aaa, bbb, ccc, 100, haha]
		//9.retainAll();对于c1容器来讲,仅保留和c2容器相同的数据。不同的其他的元素,删除。
		c1.retainAll(c2);
		System.out.println(c1); //[aaa, bbb, ccc]
		System.out.println(c2); //[aaa, bbb, ccc]
		
		//如何遍历集合中的所有的元素?迭代器Iterator
		/*
		 * 数组的遍历:
		 * 	普通for循环,下标
		 * 	for-each,增强for循环,不需要操作下标。。
		 * for(数据类型 变量名: 数组/集合){
		 * }
		 */
		
		for(Object obj:c1){
			System.out.println("-->"+obj);
		}

	}
}

  

package com.qf.demo02;

import java.util.ArrayList;
import java.util.Collection;

class Person{
	String name;
	int age;
	
	
	@Override
	public boolean equals(Object obj) {
		if(this == obj){
			return true;
		}
		if(obj == null){
			return false;
		}
		if(obj instanceof Person){
			Person p  = (Person) obj;
			if(this.age == p.age && this.name .equals(p.name)){
				return true;
			}
		}
		return false;
	}
	
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}
	public Person() {
		super();
	}
	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	
}
public class Test6Collection {

	public static void main(String[] args) {
		//课堂练习:创建一个集合,存储3个人,2个字符串,3个整数-->装箱
		Person p1 = new Person("王二狗", 18);
		Person p2 = new Person("李小花",17);
		Person p3 = new Person("李铁柱", 19);
		
		Collection c3 = new ArrayList();//c3能够存储什么类型的数据?Object类型,任意对象
		//存储都是对象的地址。
		c3.add(p1);
		c3.add(p2);
		c3.add(p3);
		//重写toString(),就是为了打印好看:显示属性值,如果不重写,就显示地址
		System.out.println(c3);//
		c3.add("abc");
		c3.add("hello");
		c3.add(1);//int-->Integer-->Object
		c3.add(2);
		c3.add(3);
		System.out.println(c3);
		System.out.println(c3.size());//8个数组:3个Person,2个String,3个Integer
		
		//能否将集合中的Integer的数据,累加求和
		int sum = 0;
		for(Object obj:c3){//遍历该容器,获取里面的每一个元素obj
			if(obj instanceof Integer){//判断obj是否是Integer类型
				int i = (int) obj;//向下转型
				sum += i;//累加求和
			}
		}
		System.out.println(sum);//6
		
		//[Person [name=王二狗, age=18], Person [name=李小花, age=17], Person [name=李铁柱, age=19], abc, hello, 1, 2, 3]
		System.out.println(c3.contains("hello"));//true
		System.out.println(c3.contains(3));//true
		System.out.println(c3.contains(new Person("王二狗", 18)));//false,true
		
		System.out.println(c3.remove("abc")); //false
		System.out.println(c3);
		
//		System.out.println(c3.remove(p1));
		
		
		p1.name = null;
		System.out.println(c3);
			
		
		//equals()
		/*
		 * String类,Integer类。。。都重写了equals(),toString()....
		 * 	String类,重写equals,比较是字符串的字面值""引起来的内容一样,就返回true。
		 * 	Integer类,重写equals,比较包装的数值。
		 * 	Person,--->Object,比地址
		 */
	}

}

  

posted @ 2020-07-25 20:00  1769987233  阅读(110)  评论(0编辑  收藏  举报