java集合类

Collection, List, Set, Map

 Collection – 对象之间没有指定的顺序,允许重复元素。
 Set – 对象之间没有指定的顺序,不允许重复元素
 List– 对象之间有指定的顺序,允许重复元素,并引入位置下标。
 Map – 接口用于保存关键字(Key)和数值(Value)的集合,集合中的每个对象加入时都提供数值和关键字。Map 接口既不继承 Set 也不继承 Collection。

package collection;
import java.util.*;
public class CollectionToArray {
    public static void main(String[] args) {        
        Collection collection1=new ArrayList();
        //创建一个集合对象,ArrayList属于Collection的子类,相当于把一个中国人赋值给一个人
        collection1.add("000");//添加对象到Collection集合中
        collection1.add("111");
        collection1.add("222");
        System.out.println("集合collection1的大小:"+collection1.size());
        System.out.println("集合collection1的内容:"+collection1);
        collection1.remove("000");//从集合collection1中移除掉 "000" 这个对象
        System.out.println("集合collection1移除 000 后的内容:"+collection1);
        System.out.println("集合collection1中是否包含000 :"+collection1.contains("000"));
        System.out.println("集合collection1中是否包含111 :"+collection1.contains("111"));
        Collection collection2=new ArrayList();
        collection2.addAll(collection1);//将collection1 集合中的元素全部都加到collection2中
        System.out.println("集合collection2的内容:"+collection2);
        collection2.clear();//清空集合 collection1 中的元素
        System.out.println("集合collection2是否为空 :"+collection2.isEmpty());
        //将集合collection1转化为数组
        Object s[]= collection1.toArray();  //所有的集合类都有这个方法,转化成数组
        for(int i=0;i<s.length;i++){
            System.out.println(s[i]);
        }
    }
}

迭代器

/*
 *  迭代器(Iterator)的概念,也是出于一种设计模式就是为达成此目的而形成的。
 *  所以Collection不提供get()方法。如果要遍历Collectin中的元素,就必须用Iterator。
 *  Java的Collection的Iterator 能够用来,:
1)      使用方法 iterator() 要求容器返回一个Iterator .第一次调用Iterator 的next() 方法时,它返回集合序列的第一个元素。
2)      使用next() 获得集合序列的中的下一个元素。
3)      使用hasNext()检查序列中是否元素。
4)      使用remove()将迭代器新返回的元素删除。
需要注意的是:方法删除由next方法返回的最后一个元素,在每次调用next时,remove方法只能被调用一次 。
大家看,Java 实现的这个迭代器的使用就是如此的简单。Iterator(跌代器)虽然功能简单,
但仍然可以帮助我们解决许多问题,同时针对List 还有一个更复杂更高级的ListIterator。
 */
package collection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class IteratorDemo {
    public static void main(String[] args) {
        Collection collection = new ArrayList();
        collection.add("s1");
        collection.add("s2");
        collection.add("s3");
        Iterator iterator = collection.iterator();//得到一个迭代器
        while (iterator.hasNext()) {//遍历
            Object element = iterator.next();           // 返回迭代的下一个元素。
            System.out.println("iterator = " + element);
        }
        if(collection.isEmpty())
            System.out.println("collection is Empty!");
        else
            System.out.println("collection is not Empty! size="+collection.size());
        Iterator iterator2 = collection.iterator();
        while (iterator2.hasNext()) {//移除元素
            Object element = iterator2.next();
            System.out.println("remove: "+element);
            iterator2.remove();             //从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
        }       
        Iterator iterator3 = collection.iterator();
        if (!iterator3.hasNext()) {//察看是否还有元素,hasNext()如果仍有元素可以迭代,则返回 true。
            System.out.println("没有元素");
        }   
        if(collection.isEmpty())
            System.out.println("collection is Empty!");
        //使用collection.isEmpty()方法来判断
    }
}

List


package collection;
import java.util.*;

public class ListExample {
  public static void main(String args[]) {
    LinkedList queue = new LinkedList();     // LinkedList和ArrayList
    queue.addFirst("Bernadine");              //将指定元素插入此列表的开头。
    queue.addFirst("Elizabeth");            
    queue.addFirst("Gene");
    queue.addFirst("Elizabeth");    
    queue.addFirst("Clara");
    System.out.println(queue);
    queue.removeLast();                    // 移除并返回此列表的最后一个元素。
    queue.removeLast();
    System.out.println(queue);

    Set set1=new TreeSet();            //不允许重复的元素
  //  List set1 = new ArrayList();
    set1.add("a");
    set1.add("b");
    set1.add("b");
    set1.add("c");
    set1.add("d");
    System.out.println(set1);



  }
}

ListIterator 接口

/*
 * ListIterator 接口继承 Iterator 接口以支持添加或更改底层集合中的元素,还支持双向访问
 */
package collection;
import java.util.*;

public class ListIteratorTest {
    public static void main(String[] args) {
        List list = new ArrayList();        //List是ArrayList的父类
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");    
        System.out.println("下标0开始:"+list.listIterator(0).next());//next()
        System.out.println("下标1开始:"+list.listIterator(1).next());
        System.out.println("子List 1-3:"+list.subList(1,3));//子列表    
        ListIterator it = list.listIterator();//默认从下标0开始
        //隐式光标属性add操作 ,插入到当前的下标的前面
        it.add("sss");
        while(it.hasNext()){
            System.out.println("next Index="+it.nextIndex()+",Object="+it.next());
        }   
        ListIterator it0 = list.listIterator();//默认从下标0开始
        while(it0.hasNext()){

            System.out.println("next Index="+it0.nextIndex()+",Object="+it0.next());
        }   
        //set属性
        ListIterator it1 = list.listIterator();
        it1.next();
        //System.out.println("next Index="+it1.nextIndex()+",Object="+it1.next());

        it1.set("ooo");
        ListIterator it2 = list.listIterator(list.size());//下标
        while(it2.hasPrevious()){
            System.out.println("previous Index="+it2.previousIndex()+",Object="+it2.previous());
        }
    }
}

Map

package collection;
/*
 * 对于Map部分的使用和实现,主要就是需要注意存放“键值对”中的对象的equals()方法和hashCode()方法的覆写。
 * 如果需要使用到排序的话,那么还需要实现Comparable 接口中的compareTo() 方法。
 * 我们需要注意Map中的“键”是不能重复的,而是否重复的判断,是通过调用“键”对象的equals()方法来决定的。
 * 而在HashMap中查找和存取“键值对”是同时使用hashCode()方法和equals()方法来决定的。
 */

import java.util.*;
//身份证类
class Code{
    final int id;//身份证号码已经确认,不能改变
    Code(int i){
        id=i;
    }
    //身份号号码相同,则身份证相同
    public boolean equals(Object anObject) {
        if (anObject instanceof Code){
            Code other=(Code) anObject;
            return this.id==other.id;
        }
        return false;
    }
    public String toString() {
        return "身份证:"+id;
    }
    //覆写hashCode方法,并使用身份证号作为hash值
        /*  public int hashCode(){
                return id;
            }*/
    }
//人员信息类
class Person {
    Code id;// 身份证
    String name;// 姓名
    public Person(String name, Code id) {
        this.id=id;
        this.name=name;
    }
    //如果身份证号相同,就表示两个人是同一个人
    public boolean equals(Object anObject) {
        if (anObject instanceof Person){
            Person other=(Person) anObject;
            return this.id.equals(other.id);
        }
        return false;
    }
    public String toString() {
        return "姓名:"+name+" 身份证:"+id.id+"\n";
    }
}
public class HashCodeEx {
    public static void main(String[] args) {
        HashMap map=new HashMap();
        Person p1=new Person("张三",new Code(123));
        map.put(p1.id,p1);//我们根据身份证来作为key值存放到Map中
        Person p2=new Person("李四",new Code(456));
        map.put(p2.id,p2);
        Person p3=new Person("王二",new Code(789));
        map.put(p3.id,p3);
        System.out.println("HashMap 中存放的人员信息:\n"+map);
        // 张三 改名为:张山 但是还是同一个人。
        Person p4=new Person("张山",new Code(123));
        map.put(p4.id,p4);
        System.out.println("张三改名后 HashMap 中存放的人员信息:\n"+map);
        //查找身份证为:123 的人员信息
        System.out.println("查找身份证为:123 的人员信息:"+map.get(new Code(123)));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值