Java 集合

集合

集合由来:数组操作数据的弊端
数组弊端:
1.只能添加相同类型的元素(基本数据类型和引用数据类型)
2.长度一旦确定,就不能改变
  要添加超出数组长度个数的元素,操作复杂

集合的特点:
1.能添加不同类型的元素
注意:集合中只能添加引用数据类型(对象类型)
2.长度可变

集合框架体系

Java 集合_第1张图片

集合的基本方法

// 创建集合 多态的声明方式
Collection collection = new ArrayList();
// 添加方法
// 向集合中添加基本数据类型的时候
// 系统会自动装箱,把基本数据类型变成该数据类型的包装类
// ArrayList 中的 add 方法不可能返回失败
// 因为没有写返回 false 的判断 只有 true
// 思考:不能返回失败,为什么还要设计返回值呢?(思想)
// 要适用所有的子类,子接口
boolean add = collection.add("a");
boolean add2 = collection.add("b");
boolean add3 = collection.add("c");
boolean add4 = collection.add(10);
boolean add5 = collection.add(true);
// 打印集合
System.out.println(collection.toString());
// 获取集合长度
int size = collection.size();
System.out.println(size);
// 判断包含
boolean contains = collection.contains(10);
System.out.println(contains);
// 删除
boolean remove = collection.remove(true);
System.out.println(remove);
// 操作的是集合本身
System.out.println(collection);
// 判断集合是否为空
boolean empty = collection.isEmpty();
System.out.println(empty);
// 清空数组
collection.clear();
System.out.println(collection);
打印字符串
private static void function() {
    Collection collection = new ArrayList();
    collection.add("a");
    collection.add("b");
    collection.add("c");
    collection.add("d");
    // 遍历集合中的每个元素(集合转数组)
    Object[] array = collection.toArray();
    for (int i = 0; i < array.length; i++) {
        System.out.println(array[i]);
    }
}
创建一个集合,加入三个学生,从集合中取出学生姓名

private static void function() {
    Collection collection = new ArrayList();
    collection.add(new Student("学生1", 18));
    collection.add(new Student("学生2", 18));
    collection.add(new Student("学生3", 18));
    // 集合转数组(相当于有一个向上转型的操作)
    // 对象调方法(强转注意:把数组中每一个对象进行强转,
    而不是把保存对象的容器(数组)转化)
    Object[] array = collection.toArray();
    // 遍历数组
    for (int i = 0; i < array.length; i++) {
        // array[i] 直接从数组中取出来是 Object 类型
        // 要想使用 Student 类中的方法,需要强壮
        // 注意:必须是这个类型,才能强转成这个类型!
        Student student = (Student)array[i];
        System.out.println(student.getName());
    }
}

错误的强转方式
public static void function() {
    Collection collection = new ArrayList();
    collection.add(new Student("学生1", 18));
    collection.add(new Student("学生2", 18));
    collection.add(new Student("学生3", 18));
    Student[] array = (Student[])collection.toArray();
    for (Student student : array) {
        System.out.println(student);
    }
}
addAll
private static void function() {
    Collection collection = new ArrayList();
    collection.add("a");
    collection.add("b");
    collection.add("c");
    Collection collection2 = new ArrayList();
    collection2.add("x");
    collection2.add("y");
    collection2.add("z");
    // 给集合 collection 添加一个元素,这个元素是 collection2
    // collection.add(collection2);
    // System.out.println(collection);

    // 调用要测试的方法
    collection.addAll(collection2);
    // 查看调用后效果
    // 把 collection2集合中每一个元素取出来添加到 collection 集合中
    System.out.println("c:" + collection);
    System.out.println("c2:" + collection2);
}
removeAll
private static void function() {
    Collection collection = new ArrayList();
    collection.add("a");
    collection.add("b");
    collection.add("c");
    Collection collection2 = new ArrayList();
    collection2.add("x");
    collection2.add("y");
    collection2.add("z");
    // 集合调用方法,将该集合中两个集合相同的所有元素删除
    collection.removeAll(collection2);
    System.out.println("c:" + collection);
    System.out.println("c2:" + collection2);
}
retainAll
private static void function() {
    Collection collection = new ArrayList();
    collection.add("a");
    collection.add("b");
    collection.add("c");
    Collection collection2 = new ArrayList();
    collection2.add("x");
    collection2.add("y");
    collection2.add("z");
    // 集合调用方法,把两个集合的交集取出来,保存到该集合,其他元素删除
    // 如果 collection 集合和 collection2 求出交集放到 collection 中
    // 如果 collection 和原来对比,发生变化返回 true
    // 不发生变化返回 false
    collection.retainAll(collection2);
    System.out.println("c:" + collection);
    System.out.println("c2:" + collection2);
}

迭代器(遍历)

// 测试迭代器中的方法
Collection collection = new ArrayList();
collection.add("a");
collection.add("b");
collection.add("c");
// 获取集合中的迭代器
Iterator iterator = collection.iterator();
// 先判断集合中是否有元素
boolean hasNext = iterator.hasNext();
System.out.println(hasNext);
// 从集合中取出元素
Object next = iterator.next();
System.out.println(next);
遍历集合
private static void function() {
    Collection collection = new ArrayList();
    // 迭代时,有一个指针,指向集合首位置
    // 每调用一次 next 方法,指针就向下移一格
    collection.add("a");
    collection.add("b");
    collection.add("c");
    // 遍历集合
    Iterator iterator = collection.iterator();
    // 如果有元素就获取没元素就停止循环
    while (iterator.hasNext()) {
        // 注意:迭代时循环中只能使用一次 next() 方法
        System.out.println(iterator.next());
    }
}
创建一个集合
保存3学生
使用迭代器遍历,打印学生姓名

private static void function() {
    Collection collection = new ArrayList();
    collection.add(new Student("学生1", 18));
    collection.add(new Student("学生2", 18));
    collection.add(new Student("学生3", 18));
    // 获取集合中迭代器
    Iterator iterator = collection.iterator();
    // 循环获取对象
    while (iterator.hasNext()) {
        // 获取元素
        Object next = iterator.next();
        // 强转成 Student 类型
        Student student = (Student) next;
        // 打印姓名
        System.out.println(student.getName());
    }
}

综合引用–图书馆

/*
 * 书类
 * 书名
 * 作者
 */
public class Books {
    private String bookName;// 书名
    private String author;// 作者
    public Books() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Books(String bookName, String author) {
        super();
        this.bookName = bookName;
        this.author = author;
    }
    public String getBookName() {
        return bookName;
    }
    public void setBookName(String bookName) {
        this.bookName = bookName;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    @Override
    public String toString() {
        return "[书名:" + bookName + ", 作者:" + author + "]";
    }

}
/*
 * 需求:
 * 创建图书馆类 有名字 保存图书 打印所有图书的信息
 */

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
@SuppressWarnings({"rawtypes", "unused","unchecked"})
public class Library {
    private String libraryName;// 图书馆名字
    // 保存图书的容器
    // 集合必须进行初始化(创建集合对象),才能添加元素,可以在构造方法中初始化
    private Collection books;
    public Library() {
        super();
        // 调用无参时,也能创建出保存书的容器
        this.books = new ArrayList();
    }
    // 有参的构造方法,只提供一个图书馆名字的参数就可以
    public Library(String libraryName) {
        super();
        this.libraryName = libraryName;
        // 创建保存书的容器
        this.books = new ArrayList();
    }
    public String getLibraryName() {
        return libraryName;
    }
    public void setLibraryName(String libraryName) {
        this.libraryName = libraryName;
    }
    public Collection getBooks() {
        return books;
    }
    public void setBooks(Collection books) {
        this.books = books;
    }
    @Override
    public String toString() {
        return "[图书馆名=" + libraryName + ", 书名=" + books + "]";
    }
    // 添加书的方法
    public void addBook(Books books) {
        // 把书添加到容器中
        this.books.add(books);
    }
    // 打印所有书的方法
    public void print() {
        System.out.println(getLibraryName());
        // 遍历集合
        Iterator iterator = this.books.iterator();
        while (iterator.hasNext()) {
            // 获取集合中的元素
            Object next = iterator.next();
            // 强制转换成书
            Books books = (Books) next;
            // 打印书
            System.out.println(books);
        }
    }
}
public class Test {
    public static void main(String[] args) {
        Library library = new Library("图书馆");
        // 添加书
        library.addBook(new Books("西游记", "吴承恩"));
        library.addBook(new Books("水浒传", "施耐庵"));
        library.addBook(new Books("红楼梦", "曹雪芹"));
        library.addBook(new Books("三国演义", "罗贯中"));
        // 打印图书馆信息
    }

}

http://blog.csdn.net/huzongnan/article/list

你可能感兴趣的:(Java 集合)