/*
Collection接口
|---------List接口
|----------ArrayList(主要实现类)
|----------LinkedList(对于频繁的插入删除操作)
|----------Vector(古老的实现类、线程安全但效率低于ArrayList)
|--------- Set接口 存储无序的 不可重复的元素 Set中常用的方法都是Collection下定义的 无序性!=随机
|---------HashSet (主要实现类)
|---------LinkedHashSet
|---------TreeSet
*/
@Test
public void testHashSet(){
//无序性!=随机
//不可重复性 得看 equals()方法 hashCode()方法 是否重写
//进而保证Set元素得不可重复性
//Set中的元素如何存储呢? 使用了哈希算法
//当Set中添加对象时首先调用此对象所在类的HashCode()方法 计算此对象的哈希值 此哈希值决定了此对象在Set中的存储位置,若此位置没有对象存储,则直接存到这个位置
//若此位置已有对象存储再通过 equals()比较这两个对象相同 如果相同后一个不能再添加进来 要求 hashCode() equals() 方法一致
Set set = new HashSet();
set.add(123);
set.add(465);
set.add("AA");
set.add("BB");
set.add(null);
Person p1 = new Person(2,"lisi");
Person p2 = new Person(2,"lisi");
System.out.println(p1.hashCode());
System.out.println(p2.hashCode());
System.out.println(p1.equals(p2));
set.add(p1);
set.add(p2);
System.out.println(set.size());
System.out.println(set);
}
/*
* 数组一旦创建 不可改变 数组存放对象不可增加 使用集合避免弊端
*/
public class TestCollection {
@Test
public void testCollection3() {
Collection coll = new ArrayList();
// size
System.out.println(coll.size());
// add
coll.add(123);
coll.add(new String("AA"));
coll.add(new Date());
coll.add("BB");
coll.add(new Student("MM",23));
Collection coll1 = new ArrayList();
coll1.add(123);
coll1.add(new String("AA"));
// 10 removeAll(Collection coll):从当前集合中删除包含在coll中的元素
coll.retainAll(coll1);
System.out.println(coll1);
//11 equals(Object obj): 判断所有元素是否完全相同 相同true
Collection coll2 = new ArrayList();
coll2.add(123);
coll2.add(new String("AA"));
System.out.println(coll1.equals(coll2));
//12 hashCode():
System.out.println(coll.hashCode());
//13 toArray() 将集合转换成数组
Object[] obj = coll.toArray();
for (Object object : obj) {
System.out.println(object);
}
//14 iterator() 返回以正确顺序在列表的元素上进行迭代的迭代器。遍历集合 返回一个 Iterator接口实现类对象 进而实现遍历
Iterator iterator = coll.iterator();
//方式一
/*System.out.println(iterator.next());
System.out.println(iterator.next());
System.out.println(iterator.next());*/
//方式二
/*for(int i = 0;i<coll.size();i++) {
System.out.println(iterator.next());
}*/
//方式三使用
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
}
@Test
public void testCollection2() {
Collection coll = new ArrayList();
//1 size
System.out.println(coll.size());
//2 add
coll.add(123);
coll.add("AAA");
System.out.println(coll.size());
// contains(Object obj)判断集合是否包含指定元素 包含则返回 true
// 判断依据:根据元素所在在的类的equals()方法进行判断
// 明确:如果存入集合元素是自定义类对象 要求自定义重写equals()方法
boolean b1 = coll.contains(123);
System.out.println(b1);
Student s = new Student("张三", 33);
coll.add(s);
boolean b2 = coll.contains(s);
System.out.println(b2);
// 7containsAll(Conlection coll):判断当前几集合中是否包含coll中所有元素
Collection coll1 = new ArrayList();
coll1.add(123);
coll1.add(new String("AAA"));
boolean b3 = coll.containsAll(coll1);
coll1.add(456);
System.out.println("#" + b3);
// 8、retainAll(Collection coll): 求当前集合与col1的元素共有的元素 返回给当前集合
coll.retainAll(coll1);
System.out.println(coll);
// 9 remove(Object obj): 删除集合中obj 元素 成功返回 true
boolean b4 = coll.remove("BB");
System.out.println("#" + b4);
// 10 removeAll(Collection coll):删除所有
coll.retainAll(coll);
}
@Test
public void testCollection1() {
Collection coll = new ArrayList();
//1 size
System.out.println(coll.size());
//2 add
coll.add(123);
coll.add("AAA");
coll.add(new Date());
System.out.println(coll.size());
//3 addAll() Arrays.asList(1, 2, 3); 数组转换集合
Collection coll1 = Arrays.asList(1, 2, 3);
coll.addAll(coll1);
System.out.println(coll.size());
// 查看集合元素
System.out.println(coll);
//4 isEmpty() 判断集合是否为空
System.out.println(coll.isEmpty());
//5 清空集合
coll.clear();
System.out.println(coll.size());
}
@Test
public void testFor2() {
String[] str = new String[]{"AA","BB","DD"};
for(String s:str) {
s= "M"; //记住s定义的是局部变量 其值不会改变 增强for
System.out.println(s);
}
for(int i = 0;i<str.length;i++) {
System.out.println(str[i]);
}
}
@Test
public void testFor() {
Collection coll = new ArrayList();
// siz e
System.out.println(coll.size());
// add
coll.add(123);
coll.add(new String("AA"));
coll.add(new Date());
coll.add("BB");
coll.add(new Student("MM",23));
for (Object i : coll) {
System.out.println(i);
}
}
//错误写法
@Test
public void test2() {
Collection coll = new ArrayList();
// size
System.out.println(coll.size());
// add
coll.add(123);
coll.add(new String("AA"));
coll.add(new Date());
coll.add("BB");
coll.add(new Student("MM",23));
Iterator i = coll.iterator();
while(i.next()!=null) {
//java.util.NoSuchElementException
System.out.println(i.next());
}
}
//正确写法使用迭代器
@Test
public void test1() {
Collection coll = new ArrayList();
// size
System.out.println(coll.size());
// add
coll.add(123);
coll.add(new String("AA"));
coll.add(new Date());
coll.add("BB");
coll.add(new Student("MM",23));
Iterator i = coll.iterator();
while(i.hasNext()) {
System.out.println(i.next());
}
}