查看“商苑面馆:Java LinkedList”的源代码
←
商苑面馆:Java LinkedList
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==Java 集合== ===LinkedList=== 在Java集合里,LinkedList是ArrayList的姊妹类,同属于LisT大类。 LinkedList类提供了一个双向链表数据结构,所以针对频繁的插入和删除元素使用LinkedList类效率较高,它适合实现栈和队列。 LinkedList与ArrayList比较: LinkedList中插入元素很快,而ArrayList中插入元素很慢 LinkedList中随机访问很慢,而ArrayList中随机访问很快 ===声明和创建LinkedList=== 下面我们新建一个测试类MainClass,并在测试类的main方法中建立了一个Integer类的LinkedList。: 通过测试类可以发现,LinkedList也有一般的增删查改功能 访问集合里的每个元素用lis.get(i);,获取集合的大小用lis.size() <nowiki>import java.util.*; /*本类对应实训: */ public class MainClass { public static void main(String[] args) { LinkedList<Integer> linkedList = new LinkedList<>(); /************************** 增添元素 ************************/ linkedList.add(2); linkedList.add(3); System.out.println("After adding: " + linkedList); // 删除元素 linkedList.removeFirstOccurrence(3); linkedList.removeLastOccurrence(3); // 从此列表中移除最后一次出现的指定元素(从头部到尾部遍历列表) System.out.println("After remove:" + linkedList); //查找元素 System.out.println("get(1): " + linkedList.get(1)); // 返回此列表中指定位置处的元素 System.out.println("contains(1) is :" + linkedList.contains(1)); // 判断此列表包含指定元素,如果是,则返回true //改动元素 System.out.println("-----------------------------------------"); linkedList.set(1, 3); // 将此列表中指定位置的元素替换为指定的元素 System.out.println("After set(1, 3):" + linkedList); </nowiki> 此类为测试类,本实训完成后可将此类删去。 通过测试类可以发现,LinkedList和原先的对象数组类似,但是对于频繁的插入和删除元素来说,速度更快 ==面馆实训== ===新建食物仓库类FoodDao3=== 现在,我们在原先的项目中,新建立一个类FoodDao3,表示食物仓库:这个类的成员变量只有一个——一个命名为n、成员类型为Food的ArrayList。我们用它来表示我们面馆里所有食物。 <nowiki>public class FoodDao3 { private LinkedList<Food> n;//食物数组 public FoodDao3(LinkedList<Food> n ){ this.n = n; } public static void main(String[] args) { // TODO Auto-generated method stub } }</nowiki> ===新建search方法和toString方法=== 在FoodDao3里面新建search方法和toString方法 search方法表示在类中寻找特定的商品 toString方法表示把整个仓库中的商品清单以字符串的形式展示出来。 这两个方法功能和上一个实训的同名方法相同,只不过具体实现换成了LinkedList. <nowiki>//按名称搜 public Food search(String s){ for(int i=0;i<this.n.size();i++){ if(n.get(i).getName().equals(s)){ return n.get(i);//如果第i个元素的名称等于s,就返回它 } } return null; //return new Noodle(); } public String toString(){ String s=""; for(int i=0;i<n.size();i++){//遍历LinkedList中的每个元素 s += n.get(i).toString()+"\r\n"; } return s; } </nowiki> ===编写测试用的main方法=== main方法的代码主要包含: *数组初始化 *接收用户输入 *调用FoodDao的方法 <nowiki>public static void main(String[] args) { // TODO Auto-generated method stub //数组初始化 LinkedList<Food> al = new LinkedList<>();//新建一个数组列表 Food f1 = new Noodle("炸酱面",12.0,3,"不辣"); Food f2 =new Noodle("臊子面",14.0,2,"麻辣"); //Food f2 = new Rice("牛肉盖浇饭",3,2); Food f3 = new Noodle("刀削面",10.0,5,"微辣"); al.add(f1); al.add(f2); al.add(f3); FoodDao3 f = new FoodDao3(al);//用数组列表f初始化食物仓库foodset System.out.println(f.toString());//调用toString方法 //接收用户输入 Scanner scan = new Scanner(System.in); System.out.println("您想点什么餐品?"); String meal = scan.next(); System.out.println("输入的数据为:" + meal); //按名称搜索,调用search方法 Food n01 = f.search(meal); if(n01 != null) { System.out.println("餐品详细信息为:"+n01.toString()); System.out.println("请付钱!"); }else { System.out.println("对不起,我们店现在没有这种面"); } scan.close(); } </nowiki> ==运行结果== [[文件:java5-5.png]] ==课下练习== 思考题: *利用所学LinkedList知识,仿照食物仓库FoodDao3的例子,如何为你的商城建立商品仓库***Dao3? *利用所学LinkedList知识,仿照食物仓库FoodDao3的例子,如何为你的用户(User)建立用户数据库UserDao3? ==完整代码== <nowiki>import java.util.*; import entity.*; public class FoodDao3 { //private Food[] n;//食物数组 private LinkedList<Food> n;//食物数组 public FoodDao3(LinkedList<Food> n ){ this.n = n; } //按名称搜 public Food search(String s){ for(int i=0;i<this.n.size();i++){ if(n.get(i).getName().equals(s)){ return n.get(i); } } return null; //return new Noodle(); } public String toString(){ String s=""; for(int i=0;i<n.size();i++){ s += n.get(i).toString()+"\r\n"; } return s; } public static void main(String[] args) { // TODO Auto-generated method stub //数组初始化 LinkedList<Food> al = new LinkedList<>();//新建一个数组列表 Food f1 = new Noodle("炸酱面",12.0,3,"不辣"); Food f2 =new Noodle("臊子面",14.0,2,"麻辣"); //Food f2 = new Rice("牛肉盖浇饭",3,2); Food f3 = new Noodle("刀削面",10.0,5,"微辣"); al.add(f1); al.add(f2); al.add(f3); FoodDao3 f = new FoodDao3(al);//用数组列表f初始化食物仓库foodset System.out.println(f.toString());//调用toString方法 //接收用户输入 Scanner scan = new Scanner(System.in); System.out.println("您想点什么餐品?"); String meal = scan.next(); System.out.println("输入的数据为:" + meal); //按名称搜索,调用search方法 Food n01 = f.search(meal); if(n01 != null) { System.out.println("餐品详细信息为:"+n01.toString()); System.out.println("请付钱!"); }else { System.out.println("对不起,我们店现在没有这种面"); } scan.close(); } }</nowiki>
返回至
商苑面馆:Java LinkedList
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息