集合与数组

数组的优点:

  1. 数组一旦初始化,长度就是确定的
  2. 数组存储数据类型单一
  3. 通过数组索引的方式调用数组元素
  4. 数组中存储的多个元素是有序的,可以重复的,使用的内存空间是连续的

数组的弊端:

  1. 一旦初始化,长度就不可变
  2. 数组中操作面较简单,没有涉及到增,删,改,查,等操作的方法
  3. 针对与开发中的复杂问题,使用数组难以完全描述,比如:存储无序的,不可重复的数据

集合:

  1. Collection接口:存储的是一个一个的数据
    1. ---->List接口:有序的可重复的数据
      1. --->ArrayList,LinkedList,Vector
    2. ---->Set接口:无序的不可重复的数据
      1. --->HashSet,LinkedSet,TreeSet
  2. Map接口:存储的是一对一对的数据,key-value
    1. ----->HashMap,LinkedMap,TreeMap,Hashtable,Properties

集合框架的优点:解决了数组操作多个对象中的弊端

 

 

 

 

注意:向Collection添加对象,必须重写该对象的equals()方法

Collection的常用方法;

package collection;

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

import org.junit.Test;

public class CollectionTest {
    
    @Test
    public void test1() {
        //添加元素
        Collection coll=new ArrayList();
        coll.add("aa");
        coll.add(new Object());
        coll.add(1);
        System.out.println(coll);
        
        //获取集合长度
        System.out.println(coll.size());
        
        //.addAll()
        Collection coll1=new  ArrayList<>();
        coll1.add(2);
        coll1.addAll(coll);
        System.out.println(coll1);
        
        //clear()清空集合
        coll.clear();
        
        //判断集合是否为空
        System.out.println(coll.isEmpty());
        
        coll1.add(new Person("tom", 12));
        System.out.println(coll1);
        
        //contions(Object obj)方法:判断元素是否包含obj元素
        //其实是调用了Object 中的equals()方法
        //使用该方法必须重写所在类的equals()方法
        System.out.println(coll1.contains(new Person("tom", 12)));
        
        //contionsAll():判断coll1所有元素是否都存在于coll集合
        System.out.println(coll.containsAll(coll1));
        
        //remove():删除
        //此时要确保存在哟删除的元素存在于该集合内
        coll.add("abcd");
        coll.remove("abcd");
        System.out.println(coll);
        
        //removAll()从当前集合删除与coll集合共有的元素
        System.out.println(coll1.removeAll(coll));
        
        //retainAll():获取当前集合与coll集合共有的元素
        System.out.println(coll1.retainAll(coll));
        
        //equals()方法
        
        //hashCode()
        
        //toArray():集合转换为数组
        coll1.add("aaaa");
        Object [] arr=coll1.toArray();
        System.out.println(Arrays.toString(arr));
        
        //数组转换为集合
        Collection c=Arrays.asList(new String[] {"aaa","ddd","ccc"});
        System.out.println(Arrays.asList("mm"));
        System.out.println(c);
    }
    
}

//使用Iterator()迭代器

    初始化Collection 集合接口:    Collection c=new ArrayList();

 

调用该集合的iterator方法来生成迭代器对象    Iterator iterator=c.iterator();

 

package collection;

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

import org.junit.Test;

public class IteratorTest {
    @Test
    public void test1() {
        Collection c=new ArrayList();
        c.add("mm");
        c.add(new Person("Tom", 12));
    //    System.out.println(c);
        
        //iterator():返回一个迭代器实例
        Iterator iterator=c.iterator();
        
    //    System.out.println(iterator.getClass());
    //    System.out.println(iterator.next());
    //    System.out.println(iterator.next());
        //System.out.println(iterator.hasNext());
    
        //for
        for (int i = 0; i < c.size(); i++) {
            System.out.println(iterator.next());
        }
        //增强for循环
        /*
         * for(要遍历的集合的元素的类型 临时变量:要遍历的集合变量){
         * sout(临时变量);
         * }
         */
        for (Object object : c) {
            System.out.println(object);
        }
        
        //hasNext()推荐
        while (iterator.hasNext()){
            System.out.println(iterator.next());
            
        }
    }
}

 

posted @ 2020-03-01 15:46  我的二天  阅读(148)  评论(0编辑  收藏  举报