java语言基础--集合

集合类的特点:

  • List:里面存放的数据是有序可重复的;
  • Set:无序不可重复;
  • Queue:是一个队列,里面的数据可以可以重复,先进先出;

数组和集合的区别:

  • 数组既可以存储基本 数据类型,又可以存储引用数据类型,基本数据类型存储的是值,引用类型存储的是地址值;
  • 集合只能存储引用数据类型(对象),存储基本数据类型时,会自动装箱,变成相应的包装类;
  • 数组的长度是固定的,不能自动增长;
  • 集合的长度是可变的,可以根据元素的增加而自动增长。

集合继承体系图:

Collection常用方法:

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

public class Main {

    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add("a");
        c.add("b");
        c.add("c");
        c.add("d");
        System.out.println(c.size());
        System.out.println(c);        //在ArrayList的爷爷类AbstractCollection中重写了toString() 方法;
        c.remove("a");
        System.out.println(c);    
        //遍历里面的元素
        Object[] objects = c.toArray();
        for(int i = 0; i< objects.length; i++) {
            System.out.println(objects[i]);
        }
        //清空集合
        c.clear();
        System.out.println(c.size());
        //判断是否包含
        System.out.println(c.contains("b"));
        //判断是否为空
        System.out.println(c.isEmpty());
    }
}

Collection存放添加自定义类

Person.java

package com.dss.bean;

public class Person {

    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Person() {

    }

    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj instanceof Person) {
            Person p = (Person) obj;
            if (this.name.equals(p.getName()) && this.age == (p.getAge())) {
                return true;
            }
        }
        return false;
    }

}
View Code

Main.java

package com.dss.collection;

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

import com.dss.bean.Person;

public class Main {

    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add(new Person("马云",14));
        c.add(new Person("刘强东",88));
        c.add(new Person("雷军",56));
        
        System.out.println(c.size());
        Object[] o = c.toArray();
        
        for(int i = 0; i< o.length; i++) {
            System.out.println(o[i]);
        }
        
        //需要重写Person的equals方法
        Person p = new Person("马云",14);
        System.out.println(c.contains(p));
        c.remove(p);
        System.out.println(c.contains(p));
        c.clear();
    }
}
View Code

Collection类中的一些带All的方法

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

public class Main2 {

    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static void main(String[] args) {

        Collection c = new ArrayList();

        c.add("a");
        c.add("b");
        c.add("c");

        Collection c1 = new ArrayList();
        c1.add("a");
        c1.add("b");
        
        c.addAll(c1);
        System.out.println(c);
        
        
        boolean flag = c.containsAll(c1);
        System.out.println(flag);
        
        c.removeAll(c1);
        System.out.print(c);
    }
}

 

posted on 2018-08-18 22:36  董大志  阅读(227)  评论(0)    收藏  举报

导航