Java(四)集合、Collection,List

1.  集合

 1.1  集合 与 数组

         数组和集合类都是容器

         数组长度是固定的,集合长度是可变的。

         数组中可以存储基本数据类型,集合只能存储对象

          数组中存储数据类型是单一的,集合中可以存储任意类型的对象。

         集合类的特点 :  用于存储对象,长度是可变的,可以存储不同类型的对象。

1.2  集合的分类

       集合做什么:  将对象添加到集合、从集合中删除对象、从集合中查找一个对象、从集合中修改一个对象就是增删改查

      注意:集合和数组中存放的都是对象的引用而非对象本身


。。。。


1.3  什么时候该使用什么样的集合   

2.  集合类 (Collection)

Collection接口有两个子接口: List(链表|线性表),Set(集)
特点:Collection中描述的是集合共有的功能(CRUD)
List可存放重复元素,元素存取是有序的
Set不可以存放重复元素,元素存取是无序的

创建集合对象,使用Collection中的List的具体实现类ArrayList:   Collection coll=new Arraylist();

实例:

       创建集合对象,创建Person对象,集合中添加一些Perosn,删除指定Person, 删除所有 Person,判断容器中是否还有Person,判断容器中是否包含指定Person,获取容器中Person的个数,将容器变为数组,遍历除所有Person。
class Person {
	private String name;
	private int age;
	public Person() {
	}
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
	@Override
	public int hashCode() {
		return this.name.hashCode() + age;
	}
	@Override
	public boolean equals(Object obj) {
		if (!(obj instanceof Person)) {
			return false;
		}
		Person p = (Person) obj;
		return this.name.equals(p.name) && this.age == p.age;
	}
	@Override  
	public String toString() {
		return "Person :name=" + name + ", age=" + age;
	}
}
public static void main(String[] args) {
		Person p1 = new Person("张三", 19);
		Person p2 = new Person("李四", 20);
		Person p3 = new Person("王五", 18);
		Collection list = new ArrayList();
		list.add(p1);
		list.add(p2);
		list.add(p3);
		// isEmpty() 判断集合是否为空
		boolean empty = list.isEmpty();
		System.out.println(empty);
		// 返回集合容器的大小
		int size = list.size();
		System.out.println(size);
         // contains()判断集合何中是否包含指定对象
		boolean contains = list.contains(p1);
		System.out.println(contains);

		// remove(); 将指定的对象从集合中删除
		list.remove(p1);
		// clear() 清空集合中的所有元素
		list.clear();
		System.out.println(list);
           Object[]  object1 = list.toArray();
         // 把编号为20的信息输出
         for(int i=0; i<object1.length; i++) {
        //  从object数组中取出的元素只能使用object类型声明变量接收, 如果需要其他的类型需要进行强制类型转换
        	 Persion p = (Persion)object1[i];
        	 if(p.id==20) {        		 
        		System.out.println(p); 	 
        	 }  }
分析:
1:Person类
1:姓名和年龄
2:重写hashCode和equals方法
1:如果不重写,调用Object类的equals方法,判断内存地址,为false
1:如果是Person类对象,并且姓名和年龄相同就返回true
2:如果不重写,调用父类hashCode方法
1:如果equals方法相同,那么hashCode也要相同,需要重写hashCode方法
3:重写toString方法
1:不重写,直接调用Object类的toString方法,打印该对象的内存地址

3.  List

    创建对象:  List list = new ArrayList();

   3.1  List 特有的方法


。。。。

import java.util.ArrayList;
import java.util.List;

public class test_1{
	   public static void main(String args[])  {
		   
		  List list = new ArrayList();
		 // 增加:add() 将指定对象存储到容器中
		  list.add("仙女");
		  list.add("付");
		  list.add("祖");
		  list.add("仙女");
		  list.add("贤");
		  		  	  
		/*// 删除0角标元素 
		  Object remove = list.remove(0);
		  System.out.println(remove);*/
		  
		/*// 修改2角标位置的值,返回的原来2角标位置的值
		  Object set = list.set(2, "仙女");
		  System.out.println(set);*/
		  
		/*//  get(int index)  注意角标越界 , get(list.size()),会出现IndexOutOfBoundsException
		  Object find = list.get(list.size() - 1);
		  System.out.println(find);*/
		  
		// indexOf(Object o) 返回第一次出现的指定元素的角标
		  int indexof = list.indexOf("仙女");
		  System.out.println(indexof);
 		  
		// lastIndexOf 返回最后出现的指定元素的角标
		  int indexfod2 = list.lastIndexOf("仙女");
		  System.out.println(indexfod2);
		  
		  System.out.println(list);		     
	   }
	  }



















猜你喜欢

转载自blog.csdn.net/image_fzx/article/details/80198127