第016天

1.类集合

  • 集合框架
  • Collection接口
  • List接口
  • ArrayList类
  • Iterator迭代器接口
  • Vector类
  • LinkedList类

 2.集合类

  集合是存储对象最常用的一种方式(容器)。Java中,集合也是类,真正用来存储东西的是某种集合类的实例对象。

3.集合类和数组的区别

  数组:

  • 长度是固定的;
  • 可以存储基本数据类型;
  • 也可以存储对象的引用;
  • 必须是相同类型的数据;

  集合:

  • 长度是可变的
  • 只能用于存储对象的引用
  • 对象可以是不同类型。

4.Collection接口概述

  • Collection层次结构中的根接口
  • Collection表示一组对象,这些对象也称collection的元素。
  • 一些collection允许有重复元素,而另一些不允许

            

5.Collection接口

  List接口:可存放重复元素,元素存取是“有序”的。

  Set接口:不可以存放重复元素,通常元素存取是“无序”的,也有一些实现类元素是“有序”的。

   “有序”“无序”指的是存放元素时是否会记住元素存放的顺序,并非对元素进行“排序”。

6.Collection接口中的方法

  添加操作:

  • boolean add(Object e)
  • boolean addAll(Collection c)

  删除操作:

  • boolean remove(Object o)
  • boolean removeAll(Collection c)

  查询操作:

  • int size()

  判断操作:

  • boolean isEmpty()
  • boolean contains(Object obj)
  • boolean containsAll(Collection c)

7.Collection接口中的方法:迭代器

  迭代操作:Iterator iterator()

  说明:

  • 迭代器不保证取出元素的顺序和存入的顺序一致。
  • 迭代器本事时一个接口,该方法返回的时一个迭代器实例对象。通常使用的是接口多态使用迭代器。

  迭代器中常用的两个方法:

  • boolean hasNext():判断是否有下一个元素
  • Object next():取出下一个元素

8.迭代器读取元素示意图

  

Collection c = new ArrayList();//创建集合对象

Iterator it = c.iterator();           //获取此集合的迭代器

while(it.haxNext()){           //遍历这个集合

  Object o =it.next();

}

 9.List接口中常用类

  ArrayList:线程不安全,查询速度快,底层用的是数组,增删慢

  LinkedList:线程不安全,链表结构,增删速度快,查询慢

10.List接口的方法&增强for

  特有方法:

  • void add(int index,Object element);
  • Object get(int index);
  • Object set(int index,Object element);

  增强for:

  for(Object obj :c){ }     其中,Object是元素类型,obj是迭代变量名,c是集合名

11.List接口遍历的方式

  • 第一种:迭代器遍历
  • 第二种:增强for循环
  • 第三种:普通for循环配合使用get方法

12.迭代器接口:Iterator

  迭代是取出集合中元素的一种方式,因为Collection中有iterator方法,所以每一个子类集合对迭代器。象都具备

  方法一:(常用)

  Iterator iter = l.iterator();

  while(iter.hasNext()){

    System.out.println(iter.next());

}

 

  方法二: 

for(Iterator iter = iterator();iter.hasNext();){

  System.out.println(iter.next());

}

 13.迭代器注意事项

  迭代器在Collection接口中是通用的。

  迭代器的next方法返回值类型是Object,所以要记得类型转换。

***********************************

习题代码:

**********************************

代码练习:

 1.从键盘录入年份,显示当年的二月份有多少天?(使用Calendar类的方法实现)

package com.test1;

import java.util.Calendar;
import java.util.Scanner;

/*
 * 从键盘录入年份,显示当年的二月份有多少天?(使用Calendar类的方法实现)
 */
class Demo3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("input a year:");
        
        int year = sc.nextInt();
        
        //
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, 1);
        
        System.out.println(c.getActualMaximum(Calendar.DAY_OF_MONTH));
        
        
    }
}

 2.从键盘录入两个时间(包含年-月-日),显示二者之间的天数差

package com.test1;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/*
 * 从键盘录入两个时间(包含年-月-日),显示二者之间的天数差
 */
public class Demo4 {

    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        System.out.println("input two date:(yyyy-MM-dd)");
        String first = sc.next();
        String second = sc.next();
        
        //
        Date d1 = new SimpleDateFormat("yyyy-MM-dd").parse(first);
        Date d2 = new SimpleDateFormat("yyyy-MM-dd").parse(second);
        
        System.out.println((d2.getTime() - d1.getTime()) / 1000 / 3600 / 24);
    }

}
package com.test1;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/*
 * 给出生日,求来到世界多少天!
 */
public class Demo1 {

    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        
        System.out.println("input your birthday:(yyyy-MM-dd)");
        
        String birthday = sc.next();
        //
        Date date = new SimpleDateFormat("yyyy-MM-dd").parse(birthday);
        long time = date.getTime();
        System.out.println((System.currentTimeMillis() - time) / 1000 / 3600 / 24);
    }

}

猜你喜欢

转载自www.cnblogs.com/akinodoo/p/9932858.html