8. 枚举(Enum)使用示例

声明一个枚举类型的简单形式如下:

访问类型 enum 枚举类名{值1[,值2,......]};

例8. 为枚举类添加辅助方法。

package set;

public enum Size {
SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");
private String num;
//定义私有构造器,无传入参数
private Size(){
this(null);
}
//定义私有构造器,传入字符串num作为参数
private Size(String num){
this.num = num;
}
//定义公有的getNum方法,获得num的值
public String getNum(){
return num;
}
}

例9. 根据用户输入的型号输出相应的价格。

package set;

public enum size {
SMALL(18.8), MEDIUM(26.8), LARGE(32.8), EXTRA_LARGE(40.8);
private double cost;
//定义私有构造器,无传入参数
private size(){
this(0);
}
//定义私有构造器,传入字符串num作为参数
private size(double cost){
this.cost = cost;
}
//定义公有的getNum方法,获得num的值
public double getCost(){
return cost;
}
}
package set;
import java.util.Scanner;
public class showClothCost { public static void main(String[] args) {
Scanner in = new Scanner(System.in);
size si;
String type;
boolean goon = true;
System.out.println("请输入衣服型号,包括:SMALL,MEDIUM,LARGE,EXTRA_LARGE,空行表示结束!");
while(goon){
type = in.nextLine().toUpperCase();
if(type.length()>0){
si = (size)Enum.valueOf(size.class, type);
System.out.println(type+"的价格为:"+si.getCost());
}
else
goon = false;
}
in.close();
} }

程序运行结果为:

请输入衣服型号,包括:SMALL,MEDIUM,LARGE,EXTRA_LARGE,空行表示结束!
small
SMALL的价格为:18.8
medium
MEDIUM的价格为:26.8
large
LARGE的价格为:32.8
extra_large
EXTRA_LARGE的价格为:40.8

9. 枚举集(EnumSet)使用示例

EnumSet没有定义构造方法,要创建一个该类的对象,必须通过它的工厂方法来实现。用于创建一个枚举集的方法很多,而且都是静态方法,它们被称为工厂方法。

例10. 创建EnumSet示例。

下面的程序要使用上面例9中的size类。

package set;

import java.util.EnumSet;
import java.util.Iterator; public class demoEnumSet { public static void main(String[] args) {
EnumSet<size> enumSet = EnumSet.of(size.SMALL, size.MEDIUM);
System.out.println("集合创建时拥有的元素:");
showEnumSet(enumSet);
System.out.println("补集拥有的元素:");
showEnumSet(EnumSet.complementOf(enumSet));
enumSet.add(size.LARGE);
enumSet.add(size.EXTRA_LARGE);
System.out.println("添加后拥有的元素为:");
showEnumSet(enumSet);
System.out.println("添加后补集拥有的元素为:");
showEnumSet(EnumSet.complementOf(enumSet)); } private static void showEnumSet(EnumSet<size> enumSet) {
Iterator<size> it = enumSet.iterator();
while(it.hasNext())
System.out.print(it.next()+" ");
System.out.println();
} }

程序运行结果如下:

集合创建时拥有的元素:
SMALL MEDIUM
补集拥有的元素:
LARGE EXTRA_LARGE
添加后拥有的元素为:
SMALL MEDIUM LARGE EXTRA_LARGE
添加后补集拥有的元素为:

10. 常用算法

例11. Collections中简单算法使用示例。

package set;
import java.util.*;
public class demoAlgorithom { public static void main(String[] args) {
ArrayList<Integer> al = new ArrayList<Integer>();
Integer elem;
for(int i=0;i<10;i++)
al.add((int)(Math.random()*1000));
System.out.println("生成的数据为:");
showList(al); elem = Collections.max(al);
System.out.println("最大数据是:"+elem); elem = Collections.min(al);
System.out.println("最小数据是:"+elem); Collections.reverse(al);
System.out.println("反转后的数据为:");
showList(al); } private static void showList(ArrayList<Integer> al) {
for(Integer elem:al)
System.out.print(elem+" ");
System.out.println(); } }

程序运行结果如下:

生成的数据为:
767 235 533 336 563 474 654 881 733 342
最大数据是:881
最小数据是:235
反转后的数据为:
342 733 881 654 474 563 336 533 235 767

11. 排序

例12. 排序示例。

package set;

import java.util.ArrayList;
import java.util.Collections; public class demoSort { public static void main(String[] args) {
ArrayList<Integer> al = new ArrayList<Integer>();
Integer elem;
for(int i=0;i<10;i++)
al.add((int)(Math.random()*1000));
System.out.println("生成的数据为:");
showList(al); Collections.sort(al);
System.out.println("排序后的数据为:");
showList(al); } private static void showList(ArrayList<Integer> al) {
for(Integer elem:al)
System.out.print(elem+" ");
System.out.println(); } }

程序运行结果为:

生成的数据为:
967 847 714 896 288 836 784 994 923 749
排序后的数据为:
288 714 749 784 836 847 896 923 967 994

12. 二分查找

例13. 二分查找示例。

package set;
import java.util.*;
public class demoBinSearch { public static void main(String[] args) {
ArrayList<Integer> al = new ArrayList<Integer>();
Integer key;
boolean goon = true;
int index;
Scanner in = new Scanner(System.in);
for(int i=0;i<10;i++)
al.add((int)(Math.random()*1000));
Collections.sort(al);
System.out.println("排序后的数据为:");
showList(al);
System.out.println("请输入要查找的关键字,小于0表示结束!");
while(goon){
key = in.nextInt();
if(key>0){
index = Collections.binarySearch(al, key);
if(index>=0)
System.out.println("关键字"+key+"的索引为:"+index);
else
System.out.println("关键字"+key+"没找到!");
}else
goon = false;
}
in.close();
} private static void showList(ArrayList<Integer> al) {
for(Integer elem:al)
System.out.print(elem+" ");
System.out.println(); } }

程序运行结果为:

排序后的数据为:
60 76 192 213 303 381 409 761 858 931
请输入要查找的关键字,小于0表示结束!
60
关键字60的索引为:0
381
关键字381的索引为:5
100
关键字100没找到!
-1

13. 向量类(Vector)使用示例

例14. Vector使用示例。

package set;
import java.util.*;
public class demoVector { public static void main(String[] args) {
Vector<String> v = new Vector<String>(4);
v.add("Test0");
v.add("Test1");
v.add("Test0");
v.add("Test2");
v.add("Test2");
System.out.println("向量中的元素为:");
showVector(v);
v.remove("Test0");
v.remove(0);
System.out.println("现在向量中元素个数为:"+v.size());
System.out.println("删除后向量中的元素为:");
showVector(v);
} private static void showVector(Vector<String> v) {
Iterator it = v.iterator();
while(it.hasNext())
System.out.print(it.next()+" ");
System.out.println(); } }

程序的运行结果为:

向量中的元素为:
Test0 Test1 Test0 Test2 Test2
现在向量中元素个数为:3
删除后向量中的元素为:
Test0 Test2 Test2

14. 栈(Stack)使用示例

例15. 利用栈将字符串逆序输出。

package set;
import java.io.*;
import java.util.*;
public class reverseString { public static void main(String[] args) {
FileInputStream fin;
FileOutputStream fout;
Stack<Character> stack = new Stack<Character>();
char ch;
try {
fin = new FileInputStream(FileDescriptor.in);
System.out.println("请输入一行字符:");
while((ch=(char)fin.read())!='\r')
stack.push(ch);
fin.close();
System.out.println("逆序输出为:");
fout= new FileOutputStream(FileDescriptor.out);
while(!stack.empty())
fout.write(stack.pop());
fout.close();
} catch (Exception e) {
System.out.println("输入输出流有误!");
} } }

程序运行结果为:

请输入一行字符:
Hello world!
逆序输出为:
!dlrow olleH

Java集合框架2的更多相关文章

  1. Java集合框架List,Map,Set等全面介绍

    Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I]   +--java.util.ArrayList [C]   +- ...

  2. Java集合框架练习-计算表达式的值

    最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...

  3. 【集合框架】Java集合框架综述

    一.前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳 ...

  4. Java 集合框架

    Java集合框架大致可以分为五个部分:List列表,Set集合.Map映射.迭代器.工具类 List 接口通常表示一个列表(数组.队列.链表 栈),其中的元素 可以重复 的是:ArrayList 和L ...

  5. Java集合框架之map

    Java集合框架之map. Map的主要实现类有HashMap,LinkedHashMap,TreeMap,等等.具体可参阅API文档. 其中HashMap是无序排序. LinkedHashMap是自 ...

  6. 22章、Java集合框架习题

    1.描述Java集合框架.列出接口.便利抽象类和具体类. Java集合框架支持2种容器:(1) 集合(Collection),存储元素集合 (2)图(Map),存储键值对.

  7. Java集合框架实现自定义排序

    Java集合框架针对不同的数据结构提供了多种排序的方法,虽然很多时候我们可以自己实现排序,比如数组等,但是灵活的使用JDK提供的排序方法,可以提高开发效率,而且通常JDK的实现要比自己造的轮子性能更优 ...

  8. (转)Java集合框架:HashMap

    来源:朱小厮 链接:http://blog.csdn.net/u013256816/article/details/50912762 Java集合框架概述 Java集合框架无论是在工作.学习.面试中都 ...

  9. Java集合框架

    集合框架体系如图所示 Java 集合框架提供了一套性能优良,使用方便的接口和类,java集合框架位于java.util包中, 所以当使用集合框架的时候需要进行导包. Map接口的常用方法 Map接口提 ...

  10. Java集合框架(常用类) JCF

    Java集合框架(常用类) JCF 为了实现某一目的或功能而预先设计好一系列封装好的具有继承关系或实现关系类的接口: 集合的由来: 特点:元素类型可以不同,集合长度可变,空间不固定: 管理集合类和接口 ...

随机推荐

  1. LoadRunner中的IP欺骗的设置以及误区

    LoadRunner中的IP欺骗的设置以及误区 最近在忙着部署web性能测试的环境后,对IP欺骗进行设置,特地做个笔记,给自己的学习历程留下点足迹. 一. 什么是IP欺骗? 做什么事首先要问个为什么, ...

  2. 基于 Laravel 开发博客应用系列 —— 从测试开始(一):创建项目和PHPUnit

    1.创建博客项目 我们将遵循上一节提到的六步创建一个新 Laravel 5.1 项目的步骤,创建本节要用到的博客项目 —— blog. 首先,在本地主机安装应用骨架: nonfu@ubuntu:~/C ...

  3. PHP会话——模拟购物车的功能

    1.php默认是不开启会话的,要使用会话用两种方法:(1)使用session_start();显示的开启会话.(2)在php.ini中找到如下的一行:找到session.auto_start = 0, ...

  4. jdk1.8下字符串常量的判断,String.intern()分析

    字符串常量池在jdk升级过程中发生了一些变化 在JDK1.6中,它在方法区中,属于“永久代”. 在JDK1.7中,它被移除方法区,放在java堆中. 在JDK1.8中,取消了“永久代”,将常量池放在元 ...

  5. NetCore+Dapper WebApi架构搭建(五):Swagger构建WebApi界面

    上一节讲解了仓储的依赖注入,想必现在都可以通过构造函数依赖注入直接调用 但是WebApi只是提供一个接口调用,为了方便我们的操作,我们得给他加上一个图形化界面工具,使用Swagger WebApi项目 ...

  6. djongo form.is_valid 返回false的解决方法

    在用djongo编写网站时,有时点击提交按钮之后,并未提交,通过debug会发现是form.is_valid()返回false造成的.但是,具体原因往往并不容易找. 这时在提交的html中添加如下代码 ...

  7. 【20181102T1】优美的序列【二分+ST表】

    题面 [正解] 相当于是 \(GCD_{i=L}^{R} A_i = min_{i=L}^{R} \{A_i\}\) 然后GCD可以用ST表实现\(O(log A_i)\)查询 并且GCD是递减的,所 ...

  8. HTTPClient实现免登陆请求(带cookie请求)

    背景: 使用httpClient请求某登录型网站,模拟一个操作,一般步骤一个httpclient模式登录->httpClient模拟操作: 此时发现,每次操作都需要进行一次登录,极其浪费时间,是 ...

  9. Oil Deposits 搜索 bfs 强联通

    Description The GeoSurvComp geologic survey company is responsible for detecting underground oil dep ...

  10. ASP.NET MVC的请求处理流程

    (1)用户打开浏览器,在地址栏输入某个网址URL并回车,浏览器便开始向该URL指向的服务器发送HTTP请求(一般是GET方式).(2)服务器端的网站服务系统(IIS)接收到该请求,先检查自己是否认识该 ...