Java SE 07 容器

本文深入讲解Java集合框架的核心概念,包括List、Set、Map的主要特点及应用场景,并介绍Collections工具类的功能与使用方法。

容器:持有事务

1136
1:一个图
1:一个类 
            Collections 封装了一些基于List容器的算法
3:三个知识点
            Foreach语句
            Generic泛型
            Autoboxing/unboxing
6:六个接口
             Collection
                   Set
                   List
             Map
             Iterator
             Comparable

一个图


Collection接口定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式。
           Set中对象没顺序且不可以重复
           List中对象有顺序且可以重复
Map接口定义了存储“键(Key)-值(value)映射对”的方法。 

一个类 

Collections 封装了一些基于List容器的算法

三个知识点

       Foreach语句

                      foreach语句可以用于数组或其他任何实现Iterator接口的类。

       Generic泛型

     

       Autoboxing/unboxing

                     在合适的时机自动打包、解包
                              自动将基础类型转换为对象
                              自动将对象转换为基础类型

六个接口

Collection


         Set


          List


Map


Iterator



		Collection<String> c2 = new HashSet<String>();
		c2.add("aaa"); c2.add("bbb"); c2.add("ccc");
		Iterator<String> it = c2.iterator();
		while(it.hasNext()) {
			String s = it.next();
			System.out.println(s);
		}

Iterator对象的remove方法是在迭代过程中删除元素的唯一方法。

Comparable


Name类重写equals、hashcode、comparable方法
class Name implements Comparable {
    private String firstName,lastName;
    public Name(String firstName, String lastName) {
        this.firstName = firstName; this.lastName = lastName;
    }
    public String getFirstName() {  return firstName;   }
    public String getLastName() {   return lastName;   }
    public String toString() {  return firstName + " " + lastName;  }
    
    public boolean equals(Object obj) {
	    if (obj instanceof Name) {
	        Name name = (Name) obj;
	        return (firstName.equals(name.firstName))
	            && (lastName.equals(name.lastName));
	    }
	    return super.equals(obj);
	}
	public int hashCode() {
	    return firstName.hashCode();
	}
		
	public int compareTo(Object o) {
       Name n = (Name)o;
       int lastCmp = 
           lastName.compareTo(n.lastName);
       return 
            (lastCmp!=0 ? lastCmp :
             firstName.compareTo(n.firstName));
    }	

List
大量随机访问-ArrayList(基于数组)
经常从表中间插入或删除元素-LinkedList(基于链表)
Map/Set
快速访问-HashMap/HashSet(使用了散列函数)
保持“键”始终处于排序状态-TreeMap/TreeSet(元素存储在红-黑树数据结构中)
保持元素插入的顺序,可快速访问-LinkedHashMap/LinkedHashSet(散列、链表)

7.5 集合(容器)

1.什么是集合? Java中常用的集合有哪几类?集合中用来存放什么?

集合类存放于java.util包中。

集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。

集合类型主要有3种:set(集)、list(列表)和map(映射)。

2.集合与数组的区别?

1.数组声明了它容纳的元素的类型,而集合不声明(不加泛型时添加的类型是Object)。

2.数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了。而集合是可以动态扩展容量,可以根据需要动态改变大小,集合提供更多的成员方法,能满足更多的需求。

3.数组是java语言中内置的数据类型,是线性排列的,执行效率或者类型检查,都是最快的. ArrayList就是基于数组创建的容器类.

3.各类集合中元素存与取的特点?如何定义一个集合?

List 有序,可重复。

Set 无序,唯一。

Map(双列集合)

    A:Map集合的数据结构仅仅针对键有效,与值无关。

    B:存储的是键值对形式的元素,键唯一,值可重复。

List<Apple> apples = new ArrayList<Apple>();
Set<Integer> intset = new HashSet<Integer>();
Map<Integer,Integer> m = new HashMap<Integer,Integer>();


7.6集合类

1.List接口的实现方式?如何定义一个list集合?

2.List集合的特点?

3.List集合中常用的方法有哪些?

List:有顺序以线性方式存储,可以存放重复对象

ArrayList:

底层的数据结构是数组;所以它查询快,增删慢;线程不安全,但是效率高。

LinkList:

底层的数据结构是链表,所以它查询慢,但是增删快;线程不安全,但是效率高。

 

7.7集合工具类

1.集合的工具类有哪些?

1. 类Collections 是集合框架的工具类,其中的方法都是静态方法。

 2. 调用某个方法直接利用类名调用即可,如Collections.sort(list1);。

2、用来排序的集合工具类是什么?如何使用其中的方法?

java.util.Arrays类

提供了各种对象的排序:char[],byte[],long[],int[]和Object[],注Arrays.sort方法排序返回的结果是升序Ascending的排列顺序。你可以定制排序顺序。这个排序和TreeSet的红黑树排序方式不同,Set不允许有重复数据存在,因此,当有重复数据时,可以使用这个工具类进行排序。Arrays提供的排序算法是归并排序算法(当元素数量小于=7时采用的是插入排序),空间复杂度O(n)。

 

java.util.Collections类

该工具类提供了大量方法对集合元素进行排序、查询和修改等操作,还提供了将集合对象设置为不可变、对集合对象实现同步控制等方法。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值