JAVA 集合(1)

本文介绍了Java集合框架的基础知识,包括集合、数组和泛型的区别。泛型是JDK1.5引入的新特性,用于在编译时检查集合元素类型,提升安全性。示例展示了泛型在方法中的应用以及泛型带来的代码安全性和简洁性。此外,还讲解了Collection接口及其实现类的特点,如ArrayList、LinkedList和HashSet,并演示了如何使用迭代器遍历和操作集合元素。
摘要由CSDN通过智能技术生成
  • 集合的概念
    对象的容器,定义了对多个对象进行操作的常用方法,类似于数组的功能。
  • 与数组的区别
    1.数组的长度固定,集合长度不固定。
    2.数组可存储基本类型和引用类型,集合只可以存储引用类型。
  • 泛型
    格式: <E>,E表示Element(元素)
    概念: JDK1.5 的一个新特性,通常用来和集合对象一起使用,是程序的增强器,它是目前主流的开发方式
    主要目的: 检查约束集合中元素的类型
    好处:可以把报错的时期提前,在编译期就报错,而不是运行后才抛出异常,在集合中添加元素时,会检查元素的数据类型,如果不是要求的数据类型就会报错
    注意: 尖括号中的值必须是引用类型,不能使用基本类型,后面的尖括号内容可以不写,但是前面的泛型必须写

泛型方法:

public static void main(String[] args) {
        Integer[] a = {1,2,3,4,5,6,7,8,9,10};
        print(a);
		
        String[] b = {"4AM","是","PGC","世界","冠军"};
        print(b);

        Double[] c = {0.6,0.66,0.666,0.6666};
        print(c);
    }
    //如果在方法上使用泛型,必须两处同时出现,一个是方法传入参数的类型是泛型,一个是返回值前加泛型<E>
    private static <E> void print(E[] c) {
        for (E d:c){
            System.out.println(d);
        }
    }

泛型的好处1:

public static void main(String[] args) {
        List list = new ArrayList();
        list.add("BerylM");
        list.add(762);
        System.out.println(list);
        
        List<String> list2 = new ArrayList();
        list2.add("雷神");
        //list2.add(111); 会报错
    }

泛型的好处2:

public static void main(String[] args) {
        Integer[] a = {1,2,3,4,5,6,7,8,9,10};
        print(a);

        String[] b = {"4AM","是","PGC","世界","冠军"};
        print(b);

        Double[] c = {0.6,0.66,0.666,0.6666};
        print(c);
    }

    private static void print(Integer[] a) {
        //增强for
        /**
         * 格式for(2 3:1){}
         * 1是要遍历的数据
         * 2是每轮遍历到的数据类型
         * 3是变量名
         * 好处:比普通for写法简单,效率还更高
         * 坏处:不能通过下标操作值,只能从头到尾依次遍历
         */
        for(Integer i :a){
            System.out.println(i);
        }
    }
  • Collection体系
    List接口(有序,有下标,元素可重复):下分ArrayList(数组集合)、LinkedList(链表)、vector(老式集合)。
    Set接口(无序,无下标、元素不可重复):下分HashSet(哈希表)、SortedSet。
  • Collection父接口
    特点:无序、无下标、不能重复。
    **集合1.retainAll(集合2):**保留当前集合与参数集合的公共元素,删掉集合1中不属于公共元素的部分,不影响集合2
    Boolean add(Object obj): 添加一个对象。
    Boolean addAll(Collection c): 将一个集合中的所有对象添加到此集合中,c集合本身没有改变。
    void clear(): 清空此集合的所有对象。
    Boolean contains(Object o): 检查此集合中是否包含o对象。
    Boolean equals(Object o): 检查此集合是否与特定对象相等。
    Boolean isEmpty(): 判断此集合是否为空。
    Boolean remove(Object o): 删除此集合中的o对象。
    Boolean removeAll(Collection c): 删除此集合中的与集合c相同的元素。
    int size(): 返回此集合中的元素个数。
    object[] toArray(): 将此集合转换为数组,数组类型是Object。
  • Collection的使用(1)
package Javaset;

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

public class demo1 {
	private static Iterator Iterator;

	public static void main(String[] args) {
		// 创建集合
		Collection collection = new ArrayList();
		// 添加元素
		collection.add("Apple");
		collection.add("Orange");
		collection.add("Bear");
		System.out.println(collection.size());
		System.out.println(collection);
		// 删除元素
		collection.remove("Bear");
		System.out.println(collection);
		// 遍历元素****
		// 1.增强for
		for (Object object : collection)
			System.out.println(object);
		// 2.使用迭代器(遍历集合专用)
		System.out.println("*************迭代器*************");
		Iterator it = collection.iterator();
		while (it.hasNext()) {
			String s = (String) it.next();
			//迭代器不能删除,如果要,可以用it.remove();
			System.out.println(s);
		}
		// 判断
		System.out.println(collection.contains("Apple"));
	}
}

  • Collection的使用(2)
package Javaset;

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

public class demo2 {
	public static void main(String[] args) {
		// 新建Collection对象
		Collection collection = new ArrayList();
		Student s1 = new Student("张三", 20);
		Student s2 = new Student("李四", 19);
		Student s3 = new Student("王五", 21);
		// 添加数据
		collection.add(s1);
		collection.add(s2);
		collection.add(s3);
		System.out.println(collection.toString());
		// 删除数据
		collection.remove(s1);
		System.out.println("删除之后:" + collection.size());
		// 遍历
		// 增强for
		System.out.println("增强for");
		for (Object object : collection) {
			Student s4 = (Student) object;
			System.out.println(s4.toString());
		}
		// 迭代器:hasNext() next() remove();迭代过程不能使用删除
		Iterator it = collection.iterator();
		while (it.hasNext()) {
			Student S4 = (Student) it.next();
			System.out.println(S4.toString());
		}
		// 4.判断
		System.out.println(collection.contains(s1));
		System.out.println(collection.isEmpty());
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值