接口基本知识 2016年12月24日

1、首先搞明白容器Collection和collections的区别

    Collection是一个接口集合,继承Collection的类主要有List,Set和Queue;

    Collections是集合类的一个工具类,提供了许多静态方法,用于集合元素中的排序、搜索以及现场呢个安全等各种操作。

2、this的用法

    一直以来对this的用法很模糊,这里做一个总结,说说自己对this的理解。

    1)this用来指代自己所在类的属性和方法。举个例子:

public class ThisDemo {
    String name="Nick";
    public void print(String name){
        System.out.println("这个类中的名字: "+this.name);
        System.out.println("局部变量中的名字: "+name);
    }
    public static void main(String[] args){
        ThisDemo td=new ThisDemo();
        td.print("cena");
    }
}

运行结果为:

这个类中的名字: Nick
局部变量中的名字: cena

2)还可以在一个类中定义两个构造参数,在一个构造参数中通过this引用来定义另一个构造参数。例如:

public class NameAndAge {
    private String name;
    private int age;
    public NameAndAge(){
        this.age=24;
    }
    public NameAndAge(String name,int age){
        this();
        this.name=name;
    }
    public void print(){
        System.out.println("最终的姓名:" +name);
        System.out.println("最终的年龄: "+age);
    }
    public static void main(String[] args){
        NameAndAge naa=new NameAndAge("cena",20);
        naa.print();
    }
}

运行结果为:

最终的姓名:cena
最终的年龄: 24

分析:在这个程序中有一个无参构造器和一个有两个参数的构造器,在两个参数的构造器中调用了无参构造器,可见在实例化这个类时,输入的年龄并未其作用,而是调用了this所在类中的年龄定义。

 3、Collection容器中,List必须按照插入的顺序保存元素,但是Set不能有重复元素,Queue按照排队规则来确定对象产生的顺序;

    Map允许用键值对来查找值。

4、Arrays.asList()方法接受一个数组或是一个用逗号分隔的元素列表,并将其转换为一个List对象。

5、Collections.addAll()方法接受一个Collection对象,以及一个数组或是一个用逗号分割的列表,将元素添加到Collection中。例如:

public class AddingGroups {
    public static void main(String[] args){
        Collection<Integer> collection=new ArrayList<Integer>(Arrays.asList(1,2,3,4,5));//将元素列表(1,2,3,4,5)转化为List添加到collection中
        Integer[] moreInts={6,7,8,9,10};
        collection.addAll(Arrays.asList(moreInts));//将数组转化为list添加到collection中,而Collections.AddAll()方法接受一个Colletion对象,以及一个                                                    数组或是一个用逗号分隔的列表,将元素添加到Collection中
        //collection.addAll(collection,11,12,13,14,15);
        //collection.addAll(collection,moreInts);
        List<Integer> list=Arrays.asList(16,17,18,19,20);
        list.set(1, 99);//将第一个位置的数设为99
        System.out.println(collection);
        System.out.println(list);
    }
}

运行结果为:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[16, 99, 18, 19, 20]

 6、Collection容器包括:List,以特定的耗损需保存一组元素;Set,元素不能重复;Queue,只允许在容器的一“端 ”插入对象,并从另一“端”移除对象。

    Map在每个槽内保存了两个对象,即键和与之相关联的值。

7、ArrayListLinkList都是List类型,都是按照被插入的顺序保存元素,不同之处在于LinkList包含的操作多于ArrayList。

    HashSet、TreeSet和LinkedHashSet都是Set类型,每个相同的项只保存一次,但是三者实现元素存储的方式不同,HashSet使用的是相当复杂并且是最快的获取元素     的方式;如果存储顺序很重要,可以使用TreeSet,它按照比较结果的升序保存对象;LinkedHashSet按照被添加的顺序保存对象。

8、对于每一个键,Map只接受存储一次,Map.put(Key,Value)方法增加想要的对象,Map.get(Key) 方法将产生与这个键相关联的值。

    HashMap提供了最快的查找技术,没有按照任何明显的顺序来保存其元素;TreeMap按照比较结果的升序保存键;LinkedHashMap按照插入顺序保存键,同时还保留了     HashMap的查询速度。

   举例说明:

public class PrintingContainers {
    static Collection fill(Collection<String> collection){
        collection.add("rat");
        collection.add("cat");
        collection.add("dog");
        collection.add("dog");
        return collection;
    }
    static Map fill(Map<String,String> map){
        map.put("rat", "Fuzzy");
        map.put("cat", "Rags");
        map.put("dog", "Bosco");
        map.put("dog", "Spot");
        return map;
    }
    public static void main(String[] args){
        System.out.println(fill(new ArrayList<String>()));
        System.out.println(fill(new LinkedList<String>()));
        System.out.println(fill(new HashSet<String>()));
        System.out.println(fill(new TreeSet<String>()));
        System.out.println(fill(new LinkedHashSet<String>()));
        System.out.println(fill(new HashMap<String,String>()));
        System.out.println(fill(new TreeMap<String,String>()));
        System.out.println(fill(new LinkedHashMap<String,String>()));
    }
}

运行结果为:

[rat, cat, dog, dog]
[rat, cat, dog, dog]
[dog, cat, rat]
[cat, dog, rat]
[rat, cat, dog]
{dog=Spot, cat=Rags, rat=Fuzzy}
{cat=Rags, dog=Spot, rat=Fuzzy}
{rat=Fuzzy, cat=Rags, dog=Spot}

分析:

Collection用方括号扩住,Map用大括号扩住。

posted @ 2016-12-24 21:20  奋斗的蜗牛cn  阅读(146)  评论(0编辑  收藏  举报