java.util包使用总结

本章目标

•了解java.util包
•运用如下类进行Java编程:
              >Date类
              >Calendar类
              >Random类
•使用Collection接口及其实现类:
              >ArrayList类
              >LinkedList类
              >Vector类
掌握HashMap类




java.util包简介

•java.util包是Java内置的一个工具包,其中包含一系列常用的工具类;
•如处理日期和日历的类以及一些集合类;
•java.util包不会默认导入,如果要使用到该包中的类,则必须在程序的开始部分显式地声明如下语句:

  import java.util.*;



Date类

•Date类对象用来表示时间和日期;
•该类提供一系列操纵日期和时间各组成部分的方法;
•Date类最多的用途是获取系统当前的日期和时间。

Date类的构造方法

构 造 方 法

说    明

Date()

使用系统当前时间创建日期对象

Date(long date)

使用自1970年1月1日以后的指定毫秒数创建日期对象

Date(int year, int month, int date)

创建指定年、月、日的日期对象

Date(int year, int month, int date,

int hrs, int min, int sec)

创建指定年、月、日、时、分、秒的日期对象




Date类的常用方法

方 法 原 型

说    明

boolean after(Date when)

如果当前日期对象在when指定的日期对象之后,返回true,否则返回false

boolean before(Date when)

如果当前日期对象在when指定的日期对象之前,返回true,否则返回false

void setTime(long time)

设置日期对象,以表示自1970年1月1日起的指定毫秒数

boolean equals(Object obj)

如果两个日期对象完全相同,返回true,否则返回false

String toString()

返回日期的格式化字符串,包括星期几



Date类示例

[java]  view plain copy print ?
  1. public class DateDemo  
  2. {  
  3.   public static void main(String[] args)  
  4.   {  
  5.     Date date = new Date();  //获得当前的系统日期和时间  
  6.     System.out.println("今天的日期是:" + date);  
  7.   
  8.     long time = date.getTime();  //获得毫秒数  
  9.     System.out.println("自1970年1月1日起以毫秒为单位的时间(GMT):" + time);  
  10.   
  11.     //截取字符串中表示时间的部分  
  12.     String strDate = date.toString();  
  13.     String strTime = strDate.substring(11, (strDate.length() - 4));  
  14.     System.out.println(strTime);  
  15.     strTime = strTime.substring(08);  
  16.     System.out.println(strTime);  
  17.   }  
  18. }  




Calendar类

Calendar类也是用来操作日期和时间的类,但它可以以整数形式检索类似于年、月、日之类的信息;
•Calendar类是抽象类,无法实例化,要得到该类对象只能通过调用getInstance方法来获得
•Calendar对象提供为特定语言或日历样式实现日期格式化所需的所有时间字段。

Calendar类的常用方法

方 法 原 型

说    明

Calendar getInstance()

返回默认地区和时区的Calendar对象

int get(int fields)

返回调用对象中fields指定部分的值

void set(int fields, int value)

将value中指定的值设置到fields指定的部分

void add(int fields, int amount)

将amount值添加到fields指定的时间或日期部分

Date getTime()

返回与调用对象具有相同时间的Date对象

Object clone()

返回调用对象的副本

void clear()

清除当前对象中所有的时间组成部分

boolean after(Object obj)

如果调用对象时间在obj之后,返回true

boolean before(Object obj)

如果调用对象时间在obj之前,返回true

boolean equals(Object obj)

判断调用对象与obj是否相等



Calendar类示例

[java]  view plain copy print ?
  1. public class CalendarDemo  
  2. {  
  3.   public static void main(String[] args)  
  4.   {  
  5.     //创建包含有当前系统时间的Calendar对象  
  6.     Calendar cal = Calendar.getInstance();  
  7.       
  8.     //打印Calendar对象的各个组成部分的值  
  9.     System.out.print("当前系统时间:");  
  10.     System.out.print(cal.get(Calendar.YEAR) + "年");  
  11.     System.out.print((cal.get(Calendar.MONTH) + 1) + "月");  
  12.     System.out.print(cal.get(Calendar.DATE) + "日 ");  
  13.     System.out.print(cal.get(Calendar.HOUR) + ":");  
  14.     System.out.print(cal.get(Calendar.MINUTE) + ":");  
  15.     System.out.println(cal.get(Calendar.SECOND));  
  16.       
  17.     //将当前时间添加30分钟,然后显示日期和时间  
  18.     cal.add(Calendar.MINUTE, 30);  
  19.     Date date = cal.getTime();  
  20.     System.out.println("将当前时间添加30分钟后的时间:" + date);  
  21.   }  
  22. }  




Arrays类

•对数组进行操作,包括排序,查找等.




Random类

•Random类专门用来生成随机数;
•该类的构造方法有2种重载方式

构 造 方 法

说    明

Random()

直接创建一个Random类对象

Random(long seed)

使用seed作为随机种子创建一个Random类对象



Random类的常用方法

方 法 原 型

说    明

int nextInt()

从随机数生成器返回下一个整型值

long nextLong()

从随机数生成器返回下一个长整型值

float nextFloat()

从随机数生成器返回0.0到1.0之间的下一个浮点值

double nextDouble()

从随机数生成器返回0.0到1.0之间的下一个双精度值

double nextGaussian()

从随机数生成器返回下一个高斯分布的双精度值。中间值为0.0,而标准差为1.0



Random类示例

[java]  view plain copy print ?
  1. public class RandomDemo  
  2. {  
  3.   public static void main(String[] args)  
  4.   {  
  5.     //创建一个Random类对象  
  6.     Random rand = new Random();  
  7.       
  8.     //随机生成20个随机整数,并将其显示出来  
  9.     for (int i = 0; i < 20; i++)  
  10.     {  
  11.       int num = rand.nextInt();  
  12.       System.out.println("第" + (i + 1) + "个随机数是:" + num);  
  13.     }  
  14.   }  
  15. }  


注意当两个Random对象的随机种子一样时,生成的值也一样

               •问题:要生成10以内的随机数怎么做?

                           提示:r.nextInt(10);

               •与Math.random()的对比



Timer类

•一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。

案例
[java]  view plain copy print ?
  1. public class Test2 {  
  2.     public static void main(String[] args) {  
  3.             Timer t = new Timer();  
  4.             t.schedule(new MyTask(t), 1000);  
  5.     }  
  6. }  
  7. class MyTask extends TimerTask {  
  8.     private Timer t;  
  9.     public MyTask(Timer t) {  
  10.             this.t = t;  
  11.     }  
  12.     public void run() {  
  13.             System.out.println("写入日志");  
  14.             t.cancel();  
  15.     }  
  16. }  


Locale类   

Locale 对象表示了特定的地理、政治和文化地区


案例

[java]  view plain copy print ?
  1. String [] cs=Locale.getISOCountries();  
  2. for(String s:cs){  
  3. System.out.print(s+"\t");  
  4. }  
  5. System.out.println();  
  6. String [] ls=Locale.getISOLanguages();  
  7. for(String s:ls){  
  8. System.out.print(s+"\t");  
  9. }  
  10. System.out.println();  
  11. NumberFormat nf=NumberFormat.getCurrencyInstance(Locale.JAPAN);  
  12. System.out.println(nf.format(33.3));  



集合

•集合是将多个元素组成一个单元的对象;
•类似于数组,但数组最大的缺点是:长度受到限制(一经创建,就不可再改变),并且只能存放相同数据类型的元素;
•集合的长度没有限制,可以存放任意多的元素,而且元素的数据类型也可以不同;
•集合还提供一系列操纵数据的方法,如存储、检索等等。


集合框架的优点

•提供有用的数据结构和算法,从而减少编程工作;
•提高了程序速度和质量,因为它提供了高性能的数据结构和算法;
•允许不同 API 之间的相互操作,API之间可以来回传递集合;
•可以方便地扩展或改写集合。


java.util包中的集合类

•为了满足不同场合的需要,java.util包中包含有一系列集合类;
•如:ArrayList类、LinkedList类、Vector类、HashMap类等等,接下来将逐一进行介绍;
•集合类中只能存放对象,而不能存放原始数据类型的元素,
         所以当有原始数据类型需要存放时,只能将其转换成相应的包装类对象。


ArrayList类

•ArrayList是长度可变的对象引用数组,称为动态数组;
•随着元素的添加,元素数目的增大,数组容量也会随之自动扩展;
•访问和遍历数组元素时,ArrayList的性能优越;
•ArrayList类继承了AbstractList类并实现了List接口。


ArrayList类的构造方法

•ArrayList类的构造方法有3种重载方式

构 造 方 法

说    明

ArrayList()

创建一个空的ArrayList对象

ArrayList(Collection c)

根据指定的集合创建ArrayList对象

ArrayList(int initialCapacity )

使用给定的大小创建ArrayList对象



ArrayList类的常用方法

方 法 原 型

说    明

int size()

返回ArrayList对象的大小,即元素的数量

boolean isEmpty()

判断ArrayList对象是否为空,为空返回true,否则返回false

void clear()

清空ArrayList对象中的所有元素

boolean add(Object element)

向ArrayList对象中添加一个元素,该元素可以是任何类的对象

Object remove(int index)

从ArrayList对象中删除指定索引位置的元素

Object get(int index)

返回指定索引位置的元素

Object set(int index, Object elem)

将元素elem存放到由index指定的索引位置上

int indexOf(Object element)

判断element在ArrayList对象中是否存在,存在返回对应的索引,否则返回-1



ArrayList类示例1

[java]  view plain copy print ?
  1. public class ArrayListDemo1 {  
  2.   public static void main(String[] args) {  
  3.     ArrayList al = new ArrayList();    //创建一个空ArrayList对象  
  4.     for (int i = 0; i < 10; i++) {  
  5.       Integer num = new Integer(i);    //创建整型包装类对象  
  6.       al.add(num);                     //将该对象存放到ArrayList中  
  7.     }  
  8.     System.out.println("数组中的元素:");  
  9.     for (int i = 0; i < al.size(); i++) {  
  10.       Integer temp = (Integer)(al.get(i));  //获得ArrayList中索引为i的元素  
  11.       System.out.println(temp);  
  12.     }  
  13.     System.out.println("*********************************");  
  14.     al.clear();  //清空  
  15.     System.out.println("数组被清空后的情况:");  
  16.     System.out.println("数组长度为:" + al.size());  
  17.     if (al.isEmpty()) {    //判断是否为空  
  18.       System.out.println("数组现在为空。");  
  19.     }  
  20.     else {  
  21.       System.out.println("数组现在不为空。");  
  22.     }  
  23.   }  
  24. }  


ArrayList类示例2

[java]  view plain copy print ?
  1. public class ArrayListDemo2 {  
  2.   public static void main(String[] args) {  
  3.     ArrayList al = new ArrayList();     //创建一个空的ArrayList对象  
  4.     //往动态数组中添加元素  
  5.     al.add("苹果"); al.add("梨子"); al.add("香蕉");  
  6.     al.add("西瓜"); al.add("榴莲");  
  7.     System.out.println("目前数组的长度:" + al.size());  
  8.     for (int i = 0; i < al.size(); i++) {  
  9.       System.out.println((String)(al.get(i)));  
  10.     }  
  11.     String str = new String("西瓜");  
  12.     int index = al.indexOf(str);      //判断某个元素是否存在  
  13.     if (index < 0) {  
  14.       System.out.println(str + "在数组中不存在。");  
  15.     } else {  
  16.       System.out.println(str + "存在,索引为:" + index);  
  17.     }  
  18.     al.remove(3);                     //删除某个索引位置的元素  
  19.     System.out.println("删除索引为3的元素后的情况:");  
  20.     for (int i = 0; i < al.size(); i++) {  
  21.       System.out.println((String)(al.get(i)));  
  22.     }  
  23.   }  
  24. }  



LinkedList类

•LinkedList类用于创建链表数据结构;
•链表中元素的数量不受任何限制,可以随意地添加和删除;
•与ArrayList相比,如果需要频繁地添加和删除元素,LinkedList的性能更加优越;
•LinkedList类继承了AbstractSequentialList类,并实现了List接口;


LinkedList类的构造方法

•LinkedList类的构造方法有2种重载方式。

构 造 方 法

说    明

LinkedList()

创建一个空链表

LinkedList(Collection c)

根据指定的集合创建链表



LinkedList类的常用方法

方 法 原 型

说    明

int size()

返回链表的大小,即元素的数量

boolean isEmpty()

判断链表是否为空,为空返回true,否则返回false

void clear()

清空链表中的所有元素,使其成为空链表

boolean add(Object element)

向链表中添加一个元素,该元素可以是任何类的对象

Object remove(int index)

从链表中删除指定索引位置的元素

Object get(int index)

返回指定索引位置的元素

Object set(int index, Object elem)

将元素elem存放到由index指定的索引位置上

int indexOf(Object element)

判断element在链表中是否存在,存在返回对应的索引,否则返回-1


LinkedList类的常用方法(续)

方 法 原 型

说    明

void addFirst(Object element)

将指定元素添加到链表的开始处

void addLast(Object element)

将指定元素添加到链表的结尾处

Object removeFirst()

删除链表中的第一个元素

Object removeLast()

删除链表中的最后一个元素

Object getFirst()

返回链表中的第一个元素

Object getLast()

返回链表中的最后一个元素



LinkedList类示例

[java]  view plain copy print ?
  1. public class LinkedListDemo {  
  2.   public static void main(String[] args) {  
  3.     LinkedList ll = new LinkedList();  //创建空的链表  
  4.     for (int i = 1; i <= 10; i++) {  
  5.       Double temp = new Double(Math.sqrt(i));  //创建包装类对象  
  6.       ll.add(temp);   //将包装类对象添加到链表中  
  7.     }  
  8.     System.out.println("链表中的元素:");  
  9.     //循环打印链表中的元素  
  10.     for (int i = 0; i < ll.size(); i++) {  
  11.       System.out.println(ll.get(i));  
  12.     }  
  13.     System.out.println("*********************************");  
  14.     ll.removeFirst();  //删除第一个元素  
  15.     ll.removeLast();   //删除最后一个元素  
  16.     System.out.println("删除第一个元素和最后一个元素后的链表:");  
  17.     for (int i = 0; i < ll.size(); i++) {  
  18.       System.out.println(ll.get(i));  
  19.     }  
  20.   }  
  21. }  



Vector类

•Vector类与ArrayList类和LinkedList类很相似,最大的区别在于Vector是线程同步的
•如果在多线程的程序中要使用到集合框架,并且不希望线程与线程之间相互干扰,那么Vector是不错的选择;
•Vector类继承于AbstractList类,并实现了List接口。

Vector类的构造方法

•Vector类的构造方法有4种重载方式。

构 造 方 法

说    明

Vector()

创建一个空的Vector对象。初始容量为10,容量增量为0

Vector(Collection c)

根据指定的集合创建Vector对象

Vector(int initialCapacity)

创建一个Vector对象,初始容量由initialCapacity指定,容量增量为0

Vector(int initialCapacity,

 int capacityIncrement)

创建一个Vector对象,初始容量由initialCapacity指定,容量增量由capacityIncrement指定



Vector类的常用方法

方 法 原 型

说    明

int size()

返回Vector对象的大小,即元素的数量

boolean isEmpty()

判断Vector对象是否为空,为空返回true,否则返回false

void clear()

清空Vector对象中的所有元素

boolean add(Object element)

向Vector对象中添加一个元素,该元素可以是任何类的对象

Object remove(int index)

从Vector对象中删除指定索引位置的元素

Object get(int index)

返回指定索引位置的元素

Object set(int index, Object elem)

将元素elem存放到由index指定的索引位置上

int indexOf(Object element)

判断element在Vector对象中是否存在,存在返回对应的索引,否则返回-1



Vector类的常用方法(续)

方 法 原 型

说    明

int capacity()

返回Vector对象的容量,即可以存放元素的个数

void addElement(Object element)

将指定元素插入到Vector对象的末尾处

void insertElementAt(Object elem, int index)

将指定元素插入到指定索引位置

void setElementAt(Object elem, int index)

将指定对象替换位于指定索引处的对象

Object ElementAt(int index)

检索位于指定索引处的元素

boolean contains(Object elem)

如果Vector对象包含指定元素,返回true

Object firstElement()

返回Vector对象中的第一个元素

Object lastElement()

返回Vector对象中的最后一个元素

void removeAllElements()

删除Vector对象中的所有元素

void copyInto(Object[] anArray)

将Vector对象中的元素复制到指定数组中

void setSize(int newSize)

根据newSize的值设置Vector对象的容量


Vector类示例

[java]  view plain copy print ?
  1. public class VectorDemo  
  2. {  
  3.   public static void main(String[] args)  
  4.   {  
  5.     Vector vec = new Vector();  //创建空的Vector  
  6.   
  7.     //往Vector中添加元素  
  8.     vec.addElement("Java");  
  9.     vec.addElement("C#");  
  10.     vec.addElement("Oracle");  
  11.     vec.addElement("C++");  
  12.     vec.addElement("HTML");  
  13.   
  14.     System.out.println(vec.toString()); //打印Vector中的元素  
  15.   
  16.     vec.removeElement("C++");  //删除其中的元素  
  17.     System.out.println(vec.toString());  
  18.   }  
  19. }  



Set接口, TreeSet, HashSet

Set接口: 无序,不可重复
HashSet: 不同步, 与Hash有关,可使用null. 比较contains时要重写类的hashCode与equals方法,
TreeSet: 排序的Set,实体类必须实现Comparable接口,定义排序规则

    public int compareTo(Object o){

             return o==null?1:(this.id-((Student)o).id);

   }



HashMap类

•HashMap以键值对的形式存储元素;
•对于HashMap来说,不存在索引,也就是说不可以通过索引来访问元素,只能通过键去访问值,如要快速检索元素的话,HashMap性能优越;
•由于没有索引,所以HashMap中元素的存放是没有顺序的;
•HashMap类继承了AbstractMap类,并实现了Map接口


HashMap类的构造方法

•HashMap类的构造方法有4种重载方式。

构 造 方 法

说    明

HashMap()

创建一个空的HashMap对象

HashMap(Map m)

根据指定的Map集合创建HashMap对象

HashMap(int initialCapacity)

创建一个指定容量和默认负载系数的HashMap对象

HashMap(int initialCapacity, float loadFactor)

创建一个指定容量和指定负载系数的HashMap对象



HashMap类的常用方法

方 法 原 型

说    明

int size()

返回HashMap对象的大小,即元素的个数

boolean isEmpty()

判断HashMap对象是否为空,为空返回true,否则返回false

void clear()

清空HashMap对象中的所有元素

Object put(Object key, Object value)

向HashMap对象中添加一个元素,必须指定该元素的键和值

Object remove(Object key)

通过键对象删除相对应的值对象

Object get(Object key)

通过键对象查找相对应的值对象

boolean containsKey(Object key)

查找指定的键对象在HashMap对象中是否存在

boolean containsValue(Object value)

查找指定的值对象在HashMap对象中是否存在



HashMap示例

[java]  view plain copy print ?
  1. public class HashDemo {  
  2.   public static void main(String[] args) {  
  3.     HashMap hm = new HashMap();  //创建空的HashMap  
  4.     //往HashMap中添加元素  
  5.     hm.put("93-07""张三");  
  6.     hm.put("84-12""李四");  
  7.     hm.put("102-20""王五");  
  8.     hm.put("91-04""郑六");  
  9.     hm.put("111-17""田七");  
  10.   
  11.     //打印出HashMap中的元素  
  12.     System.out.println(hm.toString());  
  13.     //通过键对象查找值对象  
  14.     System.out.println("学号91-04的学生是" + hm.get("91-04"));  
  15.     System.out.println("学号84-12的学生是" + hm.get("84-12"));  
  16.     hm.remove("93-07");  //通过键对象删除元素  
  17.     System.out.println(hm.toString());  
  18.   }  
  19. }  



HashTable

•同步访问的.(后续补充中)




Properties

•如何获取当前系统的配置属性?
[java]  view plain copy print ?
  1. Properties p=System.getProperties();  
  2.    Enumeration e= p.propertyNames();  
  3.    while(e.hasMoreElements()){  
  4.                 String key=(String) e.nextElement();  
  5.             System.out.println(key+"\t"+p.getProperty(key));  
  6.    }  


补充Collection与Collections

•Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
•Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作.




总结

•java.util包中包含一系列常用的工具类和集合框架类;
•Date类和Calendar类用来操作日期和时间;
•可以使用Random类的对象来生成随机数;
•集合框架提供了一系列复杂的数据结构和优越的算法;
•ArrayList类可以创建动态数组;
•LinkedList类可以创建链表结构;
•Vector类可以创建线程同步的动态数组;
•HashMap类可以创建键值对集合。


作业

1.

•使用Calendar类的相关属性以及方法!打印出某年某个月的日历信息!(要求年月由命令行输入)
•从命令行输入一个字符串!要求从中随机选择6个字符组成验证码!
•使用Random类完成小型猜拳游戏一个!

2.

•从命令行中输入用户名和密码,判断HashMap是否包含这样一个用户信息!如果包含则输出为true否则输出为false!
•从命令行输入一组字符串,要求对其进行升序、降序、随机扰乱操作!

3.

•输入一个随机数生成范围,由程序生成在这个范围内的随机数.

4.

•思考万年历用Calendar类的改写
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要导入Java.util,可以在Java代码中使用以下语句: ```java import java.util.*; ``` 这将导入Java.util中的所有类。如果您只需要使用中的特定类,则可以将星号(*)替换为该类的名称,例如: ```java import java.util.ArrayList; import java.util.HashMap; ``` 这将仅导入ArrayList和HashMap类。 ### 回答2: 要导入Java.util,首先需要在Java代码中使用import语句,这样才能使用Java.util提供的类和方法。 导入Java.util的步骤如下: 1. 打开Java源代码文件,并确保在代码的开头位置。 2. 在代码的开头位置,添加一行import语句:import java.util.*;。 3. 保存文件并编译代码。 在导入Java.util之后,就可以使用中的类和方法了。例如,可以使用Java.util中的ArrayList类来创建一个ArrayList对象,或者使用Java.util中的Random类来生成随机数。 需要注意的是, * 代表导入Java.util中的所有类和方法。如果只需要导入中的部分类或方法,可以使用具体的类名来代替 * 。 总结起来,要导入Java.util,只需在Java代码的开头位置使用import语句,并指定所需导入名。这样一来,就可以方便地使用Java.util中提供的类和方法了。 ### 回答3: 要导入Java.util,可以按照以下步骤进行操作: 首先,在你的Java文件中,你需要在文件的开头添加如下import语句: ```java import java.util.*; ``` 这个语句中的星号(*)表示导入整个Java.util中的所有类。 然后,你就可以在你的代码中使用Java.util中的类和方法了。例如,你可以使用Java.util中的ArrayList类来创建一个动态数组: ```java ArrayList<String> list = new ArrayList<>(); ``` 在这个例子中,我们使用Java.util中的ArrayList类,并创建了一个指定了泛型参数为String的ArrayList对象。 除了导入整个之外,你还可以只导入Java.util中的某个特定的类。例如,如果你只想导入Java.util中的Scanner类,你可以这样写import语句: ```java import java.util.Scanner; ``` 然后,你就可以在代码中直接使用Scanner类了。 需要注意的是,Java.utilJava核心库的标准一部分,所以在你使用Java开发环境中,它通常是默认加载的,你不需要做额外的配置步骤。 综上所述,要导入Java.util,只需要在你的Java文件中添加import语句即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值