Re: collection

集合,那真是用到的比见到的要多,其实不深刻了解也没多少要记住的,毕竟一搜一大堆,cv就好了。

  • A:集合的由来
    数组长度是固定,当添加的元素 超过了数组的长度 时需要对数组重新定义,太麻烦 ,java内部给我们提供了集合类,能存储任意对象,长度是可以改变的,随着元素的增加而增加,随着元素的减少而减少
  • B:数组和集合的区别
    • 区别1 :
      • 数组既可以存储基本数据类型,又可以存储引用数据类型基本数据类型存储的是值,引用数据类型存储的是地址值
      • 集合只能存储引用数据类型(对象), 集合中也可以存储基本数据类型,但是在存储的时候会自动装箱变成对象
    • 区别2:
      • 数组长度是固定的,不能自动增长
      • 集合的长度的是可变的,可以根据元素的增加而增长,
  • C:数组和集合什么时候用
    • 1,如果元素个数是固定的推荐用数组 (上来就创建好了,用起来比较效率。)
    • 2,如果元素个数不是固定的推荐用集合(添加数据的时候,每次增加1.5倍容量。)

所属集合的例子也有很多,穷举不完的,点一些就好了。

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

@SuppressWarnings({ "rawtypes", "unchecked" })
public class Demo1_Collection {

/**	
	* A:注意:
	* 
			collectionXxx.java使用了未经检查或不安全的操作(Editplus中).
			注意:要了解详细信息,请使用 -Xlint:unchecked重新编译.
			java编译器认为该程序存在安全隐患
			温馨提示:这不是编译失败,所以先不用理会,等学了泛型你就知道了
	add方法如果是List集合一直都返回true,因为List集合中是可以存储重复元素的
	如果是Set集合当存储重复元素的时候,就会返回false
	
	ArrayList的父类的父类重写toString方法,所以在打印对象的引用的时候,输出的结果不是Object类中toString的结果
 */
public static void main(String[] args) {
	//demo1();
	demo2();
}

private static void demo2() {
	Collection c = new ArrayList();		
	c.add("a");
	c.add("b");
	c.add("c");
	c.add("d");
	
	//c.remove("b");										//删除指定元素
	//c.clear();											//清空集合
	//System.out.println(c.contains("b"));					//判断是否包含
	//System.out.println(c.isEmpty());
	System.out.println(c.size()); 							//获取元素的个数
	System.out.println(c);
}

public static void demo1() {
	//因为没有出现泛型,所以下面会出现黄线
	Collection c = new ArrayList();						//父类引用指向子类对象
	boolean b1 = c.add("abc");
	boolean b2 = c.add(true);							//自动装箱new Boolean(true);
	boolean b3 = c.add(100);
	boolean b4 = c.add(new Student("张三",23));			
	boolean b5 = c.add("abc");
	
	System.out.println(b1);
	System.out.println(b2);
	System.out.println(b3);
	System.out.println(b4);
	System.out.println(b5);
	
	System.out.println(c.toString());
	}

}

还有
boolean remove(Object o)
void clear()
boolean contains(Object o)
boolean isEmpty()
int size()
都有了了,之后加上all就是交不交的问题了。
toArray()
迭代器来个例子

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

public class Demo5_Iterator {

/**
 * 迭代
 * * A:迭代器概述
 * 集合是用来存储元素,存储的元素需要查看,那么就需要迭代(遍历) 
 */
public static void main(String[] args) {		
	demo2();	
}

private static void demo2() {
	Collection c = new ArrayList();
	c.add(new Student("张三", 23));				//Object obj = new Student("张三",23);
	c.add(new Student("李四", 24));
	c.add(new Student("王五", 25));
	c.add(new Student("赵六", 26));
	
	//获取迭代器
	Iterator it = c.iterator();
	while(it.hasNext()) {
		//System.out.println(it.next());
		Student s = (Student)it.next();			//向下转型
		System.out.println(s.getName() + "..." + s.getAge());
		}
	}
}
  • A:迭代器原理
    • 迭代器原理:迭代器是对集合进行遍历,而每一个集合内部的存储结构都是不同的,所以每一个集合存和取都是不一样,那么就需要在每一个类中定义hasNext()和next()方法,这样做是可以的,但是会让整个集合体系过于臃肿,迭代器是将这样的方法向上抽取出接口,然后在每个类的内部,定义自己迭代方式,这样做的好处有二第一规定了整个集合体系的遍历方式都是hasNext()和next()方法,第二,代码有底层内部实现 ,使用者不用管怎么实现的,会用即可
  • B:迭代器源码解析
    • 1,在eclipse中ctrl + shift + t找到ArrayList类
    • 2,ctrl+o查找iterator()方法
    • 3,查看返回值类型是new Itr(),说明Itr这个类实现Iterator接口
    • 4,查找Itr这个内部类,发现重写了Iterator中的所有抽象方法

好了先到这里,明天继续。
ps:每日一词
拜月星慢·月满我心寒

夜笑春风,明曦潜入,伴卷天山欲沐。向去芗林,有胡笳青绿。怯相见,抱手琵琶又是遮面,丽质流年轻付。仙试听音,早时还难诉。

醉江山、但识长安路,抬头看、却有山无数。玉媚可惜无主,尽怜惜君妒。念奴娇、大浪拍千古,非无止,还道不如故。情含瘦,一段衷肠,两心还远不。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值