第一行代码 java-源代码-第13章【课程代码】java类集框架第一行代码 java-源代码-第13章【课程代码】java类集框架
第十三章:Java类集框架 13.3 List子接口
范例13-1,List基本操作。
package com.yootk.demo;
import java.util.ArrayList;
import java.util.List;
public class TestDemo {
public static void main(String[] args) {
// 从JDK 1.5开始应用了泛型,从而保证集合中所有的数据类型都一致
L...
第一行代码 java-源代码-第13章【课程代码】java类集框架
第十三章:Java类集框架 13.3 List子接口
范例13-1,List基本操作。
package com.yootk.demo;
import java.util.ArrayList;
import java.util.List;
public class TestDemo {
public static void main(String[] args) {
// 从JDK 1.5开始应用了泛型,从而保证集合中所有的数据类型都一致
List
all = new ArrayList() ; // 实例化List集合
System..println("长度," + all.size() + ",是否为空," + all.isEmpty()); out
all.add("Hello"); // 保存数据
all.add("Hello"); // 保存重复元素
all.add("World"); // 保存数据
System.out.println("长度," + all.size() + ",是否为空," + all.isEmpty());
// Collection接口定义size()方法取得了集合长度,List子接口扩充get()方法根据索引取得了数据
for (int x = 0; x < all.size(); x++) {
String str = all.get(x); // 取得索引数据
System.out.println(str); // 直接输出内容
}
}
}
范例13-2,Collection接口实例化操作 package com.yootk.demo;
import java.util.ArrayList;
import java.util.Collection;
public class TestDemo {
public static void main(String[] args) {
Collection all = new ArrayList();
all.add("Hello"); // 保存数据
all.add("Hello"); // 重复元素
all.add("World"); // 保存数据
// Collection不具备List接口的get()方法,所以必须将其转化为对象数组
Object obj[] = all.toArray(); // 变为对象数组取得
for (int x = 0; x < obj.length; x++) { // 采用循环输出
String str = (String) obj[x] ; // 强制向下转型
System.out.println(str); // 输出数据
}
}
第(1)页 共(18)页
}
范例13-3,在集合里面保存对象。 package com.yootk.demo;
import java.util.ArrayList;
import java.util.List;
class Book { // 创建一个自定义类
private String title;
private double price;
public Book(String title, double price) {
this.title = title;
this.price = price;
}
@Override
public boolean equals(Object obj) { // 必须覆写此方法,否则remove()、contains()无法使用
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof Book)) {
return false;
}
Book book = (Book) obj;
if (this.title.equals(book.title) && this.price == book.price) {
return true;
}
return false;
}
@Override
public String toString() {
return "书名," + this.title + ",价格," + this.price + "\n";
}
}
public class TestDemo {
public static void main(String[] args) {
List all = new ArrayList(); // List接口对象
all.add(new Book("Java开发实战经典", 79.8)); // 保存自定义类对象
all.add(new Book("Java Web开发实战经典", 69.8)); // 保存自定义类对象
all.add(new Book("Oracle开发实战经典", 89.8)); // 保存自定义类对象
all.remove(new Book("Oracle开发实战经典", 89.8)); // 需要使用equals()方法
System.out.println(all);
}
}
第(2)页 共(18)页
范例13-4,使用Vector。
package com.yootk.demo;
import java.util.List;
import java.util.Vector;
public class TestDemo {
public static void main(String[] args) {
// 由于都是利用子类为父类实例化,所以不管使用哪个子类,List接口功能不变
List all = new Vector() ; // 实例化List集合
System.out.println("长度," + all.size() + ",是否为空," + all.isEmpty());
all.add("Hello"); // 保存数据
all.add("Hello"); // 保存重复元素
all.add("World"); // 保存数据
System.out.println("长度," + all.size() + ",是否为空," + all.isEmpty());
// Collection接口定义了size()方法取得集合长度,List子接口扩充了get()方法,根据索引取得数据
for (int x = 0; x < all.size(); x++) {
String str = all.get(x); // 取得索引数据
System.out.println(str); // 直接输出内容
}
}
}
13.4 Set子接口
Set子接口 范例13-5,观察HashSet子类的特点。 package com.yootk.demo;
import java.util.HashSet;
import java.util.Set;
public class TestDemo {
public static void main(String[] args) {
Set all = new HashSet(); // 实例化Set接口
all.add("jixianit"); // 保存数据
all.add("mldn"); // 保存数据
all.add("yootk"); // 保存数据
all.add("yootk"); // 重复数据
System.out.println(all); // 直接输出集合
}
}
范例13-6,使用TreeSet子类。
package com.yootk.demo;
import java.util.Set;
import java.util.TreeSet;
public class TestDemo {
第(3)页 共(18)页
public static void main(String[] args) {
Set all = new TreeSet(); // 实例化Set接口
all.add("jixianit"); // 保存数据
all.add("mldn"); // 保存数据
all.add("yootk"); // 保存数据
all.add("yootk"); // 重复数据
System..println(all); // 直接输出集合 out
}
}
范例13-7,利用TreeSet保存自定义类对象。 package com.yootk.demo;
import java.util.Set;
import java.util.TreeSet;
class Book implements Comparable { // 需要实现Comparable接口
private String title;
private double price;
public Book(String title, double price) {
this.title = title;
this.price = price;
}
@Override
public String toString() {
return "书名," + this.title + ",价格," + this.price + "\n";
}
@Override
public int compareTo(Book o) { // 排序方法,比较所有属性
if (this.price > o.price) {
return 1;
} else if (this.price < o.price) {
return -1;
} else {
return this.title.compareTo(o.title); // 调用String类的比较大小
}
}
}
public class TestDemo {
public static void main(String[] args) {
Set all = new TreeSet(); // 实例化Set接口
all.add(new Book("Java开发实战经典", 79.8)); // 保存数据
all.add(new Book("Java开发实战经典", 79.8)); // 全部信息重复
all.add(new Book("JSP开发实战经典", 79.8)); // 价格信息重复
all.add(new Book("Android开发实战经典", 89.8)); // 都不重复
System.out.println(all);
}
}
第(4)页 共(18)页
范例13-8,利用HashSet子类保存自定义类对象。
package com.yootk.demo;
import java.util.Set;
import java.util.HashSet;
class Book {
private String title;
private double price;
public Book(String title, double price) {
this.title = title;
this.price = price;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
long temp;
temp = Double.doubleToLongBits(price);
result = prime * result + (int) (temp ^ (temp >>> 32));
result = prime * result + ((title == null) ? 0 : title.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Book other = (Book) obj;
if (Double.doubleToLongBits(price) != Double.doubleToLongBits(other.price))
return false;
if (title == null) {
if (other.title != null)
return false;
} else if (!title.equals(other.title))
return false;
return true;
}
@Override
public String toString() {
return "书名," + this.title + ",价格," + this.price + "\n";
}
}
public class TestDemo {
public static void main(String[] args) {
Set all = new HashSet(); // 实例化Set接口
all.add(new Book("Java开发实战经典", 79.8)); // 保存数据
all.add(new Book("Java开发实战经典", 79.8)); // 全部信息重复
第(5)页 共(18)页
集合输出
all.add(new Book("JSP开发实战经典", 79.8)); // 价格信息重复
all.add(new Book("Android开发实战经典", 89.8)); // 都不重复
System.out.println(all);
}
}
13.5 集合输出
范例13-9,使用Iterator输出集合。
package com.yootk.demo;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class TestDemo {
public static void main(String[] args) {
List all = new ArrayList() ; // 实例化List集合
all.add("Hello"); // 保存数据
all.add("Hello"); // 保存重复元素
all.add("World"); // 保存数据
Iterator iter = all.iterator() ; // 实例化Iterator接口
while (iter.hasNext()) { // 判断是否有数据
String str = iter.next() ; // 取出当前数据
System.out.println(str); // 输出数据
}
}
}
范例13-10,观察删除问题。
package com.yootk.demo;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class TestDemo {
public static void main(String[] args) {
List all = new ArrayList() ; // 实例化List集合
第(6)页 共(18)页
all.add("Hello"); // 保存重复元素
all.add("mldn"); // 保存数据
all.add("World"); // 保存数据
all.add("Yootk"); // 保存数据
Iterator iter = all.iterator() ; // 实例化Iterator接口
while (iter.hasNext()) { // 判断是否有数据
String str = iter.next() ; // 取出当前数据
if ("mldn".equals(str)) {
all.remove(str) ; // 此代码一执行,输出将中断
}
System.out.println(str); // 输出数据
}
}
}
范例13-11,完成双向迭代。
package com.yootk.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class TestDemo {
public static void main(String[] args) {
List all = new ArrayList() ; // 实例化List接口对象
all.add("www.jixianit.com") ; // 向集合保存数据
all.add("www.yootk.com") ; // 向集合保存数据
all.add("www.mldn.cn") ; // 向集合保存数据
System.out.print("由前向后输出,"); // 向集合保存数据
ListIterator iter = all.listIterator() ; // 实例化ListIterator接口
while (iter.hasNext()) { // 由前向后迭代
String str = iter.next() ; // 取出当前数据
System.out.print(str + "、"); // 输出数据
}
System.out.print("\n由后向前输出,");
while (iter.hasPrevious()) { // 由后向前迭代
String str = iter.previous() ; // 取出当前数据
System.out.print(str + "、"); // 输出数据
}
}
}
范例13-12,利用foreach输出集合数据。
package com.yootk.demo;
import java.util.ArrayList;
import java.util.List;
public class TestDemo {
public static void main(String[] args) {
第(7)页 共(18)页
List all = new ArrayList() ; // 实例化List接口对象
all.add("www.jixianit.com") ; // 向集合保存数据
all.add("www.yootk.com") ; // 向集合保存数据
all.add("www.mldn.cn") ; // 向集合保存数据
// 集合中包含的数据都是String型,所以需要使用String接收集合中的每一个数据
for (String str : all) { // for循环输出
System..println(str); out
}
}
}
范例13-13,利用Enumeration接口输出数据。 package com.yootk.demo;
import java.util.Enumeration;
import java.util.Vector;
public class TestDemo {
public static void main(String[] args) {
Vector all = new Vector() ; // 实例化Vector子类对象
all.add("www.jixianit.com") ; // 向集合保存数据
all.add("www.yootk.com") ; // 向集合保存数据
all.add("www.mldn.cn") ; // 向集合保存数据
Enumeration enu = all.elements() ; // 取得Enumeration接口对象
while(enu.hasMoreElements()) { // 判断是否有数据
String str = enu.nextElement() ; // 取出当前数据
System.out.println(str); // 输出数据
}
}
}
第(8)页 共(18)页
13.6 偶对象保存:Map接口
Map接口 范例13-14,观察HashMap子类的使用。 package com.yootk.demo;
import java.util.HashMap;
import java.util.Map;
public class TestDemo {
public static void main(String[] args) {
Map map = new HashMap(); // 定义Map集合
map.put("壹", 1); // 保存数据
map.put("贰", 2); // 保存数据
叄 map.put("", 3); // 保存数据
叄 map.put("", 33); // key数据重复
map.put("空", null); // value为null
map.put(null, 0) ; // key为null
System.out.println(map); // 输出全部map集合
}
}
范例13-15,查询操作。
package com.yootk.demo;
import java.util.HashMap;
import java.util.Map;
public class TestDemo {
public static void main(String[] args) {
Map map = new HashMap(); // 定义Map集合
map.put("壹", 1); // 保存数据
map.put("贰", 2); // 保存数据
叄 map.put("", 3); // 保存数据
叄 map.put("", 33); // key数据重复
map.put("空", null); // value为null
map.put(null, 0) ; // key为null
System.out.println(map.get("壹")); // key存在返回value
陸 System.out.println(map.get("")); // 如果key不存在,返回null
System.out.println(map.get(null)); // key存在
}
}
范例13-16,使用Hashtable。
package com.yootk.demo;
import java.util.Hashtable;
import java.util.Map;
第(9)页 共(18)页
public class TestDemo {
public static void main(String[] args) {
Map map = new Hashtable(); // 定义Map集合
map.put("壹", 1); // 保存数据
map.put("贰", 2); // 保存数据
叄 map.put("", 3); // 保存数据
叄 map.put("", 33); // key数据重复
System.out.println(map.get("壹")); // key存在返回value
陸 System.out.println(map.get("")); // key不存在,返回null
}
}
范例13-17,利用Iterator实现Map接口的输出。 package com.yootk.demo;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class TestDemo {
public static void main(String[] args) {
Map map = new Hashtable(); // 定义Map集合
map.put("壹", 1); // 保存数据
map.put("贰", 2); // 保存数据
叄 map.put("", 3); // 保存数据
叄 map.put("", 33); // key数据重复
// 将Map集合变为Set集合,目的是使用iterator()方法,注意泛型的统一
Set> set = map.entrySet() ;
Iterator> iter = set.iterator() ;// 取得Iterator实例
while (iter.hasNext()) { // 迭代输出
Map.Entry me = iter.next() ; // 取出Map.Entry
System.out.println(me.getKey() + " = " + me.getValue()); // 输出数据
}
}
}
范例13-18,使用自己定义的类作为Map集合的key。 package com.yootk.demo;
import java.util.HashMap;
import java.util.Map;
class Book { // 此类为要保存的key类型
private String title ; // 只定义一个属性
public Book(String title) { // 构造方法接收数据
this.title = title ;
}
@Override
public String toString() {
第(10)页 共(18)页
return "书名," + this.title ;
}
@Override
public int hashCode() { // 取得对象编码
final int prime = 31;
int result = 1;
result = prime * result + ((title == null) ? 0 : title.hashCode());
return result;
}
@Override
public boolean equals(Object obj) { // 进行对象比较
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Book other = (Book) obj;
if (title == null) {
if (other.title != null)
return false;
} else if (!title.equals(other.title))
return false;
return true;
}
}
public class TestDemo {
public static void main(String[] args) {
Map map = new HashMap() ; // 实例化Map接口集合
map.put(new Book("Java开发"),new String("Java")) ; // 向Map接口保存数据
System.out.println(map.get(new Book("Java开发"))); // 根据key取得value
}
}
13.7 Stack子类
Stack子类 范例13-19,观察栈的操作。 package com.yootk.demo;
import java.util.Stack;
public class TestDemo {
public static void main(String[] args) {
Stack all = new Stack();
all.push("www.jixianit.com") ;
all.push("www.yootk.com") ;
all.push("www.mldn.cn") ;
System.out.println(all.pop());
System.out.println(all.pop());
第(11)页 共(18)页
System.out.println(all.pop());
System.out.println(all.pop()); // EmptyStackException
}
}
13.8 Properties子类
Properties子类 范例13-20,属性的基本操作。
package com.yootk.demo;
import java.util.Properties;
public class TestDemo {
public static void main(String[] args) {
Properties pro = new Properties(); // 实例化类对象
pro.setProperty("BJ", "北京"); // 保存属性信息
pro.setProperty("TJ", "天津"); // 保存属性信息
System.out.println(pro.getProperty("BJ")); // 根据key取得属性信息
System.out.println(pro.getProperty("GZ")); // 根据key取得属性信息
System.out.println(pro.getProperty("GZ", "没有此记录"));// 没有key返回默认值
}
}
范例13-21,将属性信息保存在文件里。 package com.yootk.demo;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Properties;
public class TestDemo {
public static void main(String[] args) throws Exception {
Properties pro = new Properties(); // 实例化类对象
pro.setProperty("BJ", "北京"); // 保存属性信息
pro.setProperty("TJ", "天津"); // 保存属性信息
// 一般而言后缀可以随意设置,但是来讲,既然是属性文件,后缀就必须是*.properties,这样做也是为了
与国际化对应
// 在进行属性信息保存时如果属性内容为中文则会自动进行转码操作
pro.store(new FileOutputStream(new File("E:" + File.separator + "area.properties")), "Area Info");
}
}
范例13-22,通过文件流读取属性内容。 package com.yootk.demo;
import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;
第(12)页 共(18)页
public class TestDemo {
public static void main(String[] args) throws Exception {
Properties pro = new Properties(); // 实例化类对象
pro.load(new FileInputStream(new File("E:" + File.separator + "area.properties")));
System.out.println(pro.getProperty("BJ")); // 根据key取得value
}
}
13.9 Collections工具类
Collections工具类 范例13-23,为集合追加数据。
package com.yootk.demo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class TestDemo {
public static void main(String[] args) throws Exception {
List all = new ArrayList(); // 实例化集合对象
// 利用Collections类的方法向集合保存多个数据
Collections.(all, "jixianit", "mldn", "yootk", "mldnjava", "lixinghua"); addAll
Collections.(all); // 集合反转 reverse
System.out.println(all); // 直接输出集合对象
}
}
13.10 数据流
数据流 范例13-24,利用forEach()方法输出。 package com.yootk.demo;
import java.util.ArrayList;
import java.util.List;
public class TestDemo {
public static void main(String[] args) throws Exception {
List all = new ArrayList(); // 实例化List集合接口
all.add("www.JIXIANIT.com"); // 保存数据
all.add("www.yootk.com"); // 保存数据
all.add("www.mldn.cn"); // 保存数据
all.forEach(System.out::println); // 引用forEach输出
}
}
第(13)页 共(18)页
范例13-25,取得Stream对象。
package com.yootk.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class TestDemo {
public static void main(String[] args) throws Exception {
List all = new ArrayList(); // 实例化List集合接口
all.add("www.JIXIANIT.com"); // 保存数据
all.add("www.yootk.com"); // 保存数据
all.add("www.mldn.cn"); // 保存数据
Stream stream = all.stream() ; // 取得了Stream类的对象
System.out.println(stream.count()); // 取得数据个数
}
}
范例13-26,取消集合中的重复数据。 package com.yootk.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class TestDemo {
public static void main(String[] args) throws Exception {
List all = new ArrayList(); // 实例化List集合接口
all.add("www.JIXIANIT.com"); // 保存数据
all.add("www.yootk.com"); // 保存数据
all.add("www.yootk.com"); // 保存数据
all.add("www.mldn.cn"); // 保存数据
all.add("www.mldn.cn"); // 保存数据
Stream stream = all.stream() ; // 取得Stream类的对象
// 去掉重复数据后形成新的List集合数据,里面不包含重复内容的集合
List newAll = stream.distinct().collect(Collectors.toList()) ;
newAll.forEach(System.out :: println); // 取得消除重复数据后的内容
}
}
范例13-27,数据过滤。
package com.yootk.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class TestDemo {
第(14)页 共(18)页
public static void main(String[] args) throws Exception {
List all = new ArrayList(); // 实例化List集合接口
all.add("www.JIXIANIT.com"); // 保存数据,大写字母
all.add("www.yootk.com"); // 保存数据
all.add("www.yootk.com"); // 保存数据
all.add("www.mldn.cn"); // 保存数据
all.add("www.mldn.cn"); // 保存数据
Stream stream = all.stream() ; // 取得Stream类的对象
// 去掉重复元素后执行数据过滤操作,在过滤中由于需要断言型函数式接口,所以引用contains()方法
// 将满足过滤条件的数据利用收集器保存在新的List集合中
List newAll = stream.distinct().
filter((x) -> x.contains("t")).collect(Collectors.toList());
newAll.forEach(System.out :: println); // 取得消除重复数据后的内容
}
}
范例13-27,数据处理后过滤。
package com.yootk.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class TestDemo {
public static void main(String[] args) throws Exception {
List all = new ArrayList(); // 实例化List集合接口
all.add("www.JIXIANIT.com"); // 保存数据,大写字母
all.add("www.yootk.com"); // 保存数据
all.add("www.yootk.com"); // 保存数据
all.add("www.mldn.cn"); // 保存数据
all.add("www.mldn.cn"); // 保存数据
Stream stream = all.stream() ; // 取得Stream类的对象
// 去掉重复元素后执行数据过滤操作,在对集合中数据操作时将每条数据统一转为小写
// 在过滤中由于需要断言型函数式接口,所以引用contains()方法,此时只判断小写字母
// 将满足过滤条件的数据利用收集器保存在新的List集合中
List newAll = stream.distinct().map((x) -> x.toLowerCase()).
filter((x) -> x.contains("t")).collect(Collectors.toList());
newAll.forEach(System.out :: println); // 取得消除重复数据后的内容
}
}
范例13-28,实现数据流数据的分页操作。 package com.yootk.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
第(15)页 共(18)页
public class TestDemo {
public static void main(String[] args) throws Exception {
List all = new ArrayList(); // 实例化List集合接口
all.add("www.JIXIANIT.com"); // 保存数据,大写字母
all.add("www.yootk.com"); // 保存数据
all.add("www.yootk.com"); // 保存数据
all.add("www.mldn.cn"); // 保存数据
all.add("www.mldn.cn"); // 保存数据
Stream stream = all.stream() ; // 取得Stream类的对象
// 去掉重复元素后执行数据过滤操作,在对集合中数据操作时将每条数据统一转为小写
// 在过滤中由于需要断言型函数式接口,所以引用contains()方法,此时只判断小写字母
// 执行完数据过滤后进行数据的分页操作,跳过1行数据,取出1行数据
// 将满足过滤条件的数据利用收集器保存在新的List集合中
List newAll = stream.distinct().map((x) -> x.toLowerCase()).
filter((x) -> x.contains("t")).skip(1).limit(1).
collect(Collectors.toList());
newAll.forEach(System.out :: println); // 取得消除重复数据后的内容
}
}
范例13-29,实现数据的匹配查询。 package com.yootk.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class TestDemo {
public static void main(String[] args) throws Exception {
List all = new ArrayList(); // 实例化List集合接口
all.add("www.JIXIANIT.com"); // 保存数据,大写字母
all.add("www.yootk.com"); // 保存数据
all.add("www.yootk.com"); // 保存数据
all.add("www.mldn.cn"); // 保存数据
all.add("www.mldn.cn"); // 保存数据
Stream stream = all.stream() ; // 取得Stream类的对象
if (stream.anyMatch((x) -> x.contains("yootk"))) {
System.out.println("数据存在,");
}
}
}
范例13-30,设置多个条件。
package com.yootk.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Stream;
第(16)页 共(18)页
public class TestDemo {
public static void main(String[] args) throws Exception {
List all = new ArrayList(); // 实例化List集合接口
all.add("www.JIXIANIT.com"); // 保存数据,大写字母
all.add("www.yootk.com"); // 保存数据
all.add("www.yootk.com"); // 保存数据
all.add("www.mldn.cn"); // 保存数据
all.add("www.mldn.cn"); // 保存数据
Predicate p1 = (x) -> x.contains("yootk") ; // 断言型接口方法引用
Predicate p2 = (x) -> x.contains("mldn") ; // 断言型接口方法引用
Stream stream = all.stream() ; // 取得Stream类的对象
if (stream.anyMatch(p1.or(p2))) { // 两个条件有一个满足即可
System.out.println("数据存在,");
}
}
}
范例3-31,实现一个MapReduce。
package com.yootk.demo;
import java.util.ArrayList;
import java.util.List;
class Orders {
private String pname ; // 商品名称
private double price ; // 商品单价
private int amount ; // 购买数量
public Orders(String pname,double price,int amount) {
this.pname = pname ;
this.price = price ;
this.amount = amount ;
}
public String getPname() {
return pname;
}
public int getAmount() {
return amount;
}
public double getPrice() {
return price;
}
}
public class TestDemo {
public static void main(String[] args) throws Exception {
List all = new ArrayList();
all.add(new Orders("Java开发实战经典", 79.8, 200)); // 添加购买记录
all.add(new Orders("JavaWeb开发实战经典", 69.8, 500)); // 添加购买记录
all.add(new Orders("Android开发实战经典", 89.8, 300)); // 添加购买记录
all.add(new Orders("Oracle开发实战经典", 99.0, 800)); // 添加购买记录
all.stream().
map((x) -> x.getAmount() * x.getPrice()). // 用于实现每件商品总价的计算
第(17)页 共(18)页
forEach(System.out::println); // 输出每一个商品的总价
}
}
范例13-32,统计处理数据。
public class TestDemo {
public static void main(String[] args) throws Exception {
List all = new ArrayList();
all.add(new Orders("Java开发实战经典", 79.8, 200)); // 添加购买记录
all.add(new Orders("JavaWeb开发实战经典", 69.8, 500)); // 添加购买记录
all.add(new Orders("Android开发实战经典", 89.8, 300)); // 添加购买记录
all.add(new Orders("Oracle开发实战经典", 99.0, 800)); // 添加购买记录
double allPrice = all.stream().
map((x) -> x.getAmount() * x.getPrice()). // 用于实现每件商品总价的计算
reduce((sum, m) -> sum + m).get(); // 输出每一个商品的总价
System.out.println("购买图书总价," + allPrice);
}
}
范例13-33,实现数据的统计操作。
public class TestDemo {
public static void main(String[] args) throws Exception {
List all = new ArrayList();
all.add(new Orders("Java开发实战经典", 79.8, 200)); // 添加购买记录
all.add(new Orders("JavaWeb开发实战经典", 69.8, 500)); // 添加购买记录
all.add(new Orders("Android开发实战经典", 89.8, 300)); // 添加购买记录
all.add(new Orders("Oracle开发实战经典", 99.0, 800)); // 添加购买记录
DoubleSummaryStatistics dss = all.stream()
.mapToDouble((sc) -> sc.getAmount() * sc.getPrice()) // 数据处理
.summaryStatistics(); // 进行数据统计
System.out.println("商品个数," + dss.getCount());
System.out.println("总花费," + dss.getSum());
System.out.println("平均花费," + dss.getAverage());
System.out.println("最高花费," + dss.getMax());
System.out.println("最低花费," + dss.getMin());
}
}
第(18)页 共(18)页
本文档为【第一行代码 java-源代码-第13章【课程代码】java类集框架】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。