java基础之链表与数组(2)

代码解析:

1.Java中遍历数组的方法

   遍历数组方法较多,如何遍历,只要你喜欢,都可以的。

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

/**

 * 遍历数组四种方法

 * @author 黄端

 */

class Test {

 /**

  * Iterator 迭代器

  * @param args

  */

 public static void main(String[] args) {

  Test1 t = new Test1();

  Test1 t1 = new Test1();

  List list = new ArrayList();

  list.add(1);

  list.add(2);

  list.add(4);

  list.add(3); 

  Iterator iterator = list.iterator();

  System.out.println("》》java中遍历数组方法一");

  while (iterator.hasNext()) {

   int i = Integer.parseInt(iterator.next().toString());

   System.out.println(i);

  }

  System.out.println("》》java中遍历数组方法二");

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

   int i = Integer.parseInt(iter.next().toString());

   System.out.println(i);

  }

  System.out.println("》》java中遍历数组方法三");

  for (Object obj : list) {

   System.out.println(obj);

  }

  System.out.println("》》java中遍历数组方法四");

  for (int i = 0; i < list.size(); i++) {

   int k = Integer.parseInt(list.get(i).toString());

   System.out.println(k);

  }

 }

}

 

2.Java如何将数组转成Collection

我们可以使用java.util.Arrays类将数组转换成List/Collection。这个类提供的静态方法asList(Object[] a)能够将数组转成List/Collection。

   import java.util.Arrays;
  import java.util.List;
  import java.util.Iterator;
  public class ArraysExample
  {
  public static void main(String[] args)
  {
  String[] array = {"Happy", "New", "Year", "2006"};
  List list = Arrays.asList(array);
  Iterator iterator = list.iterator();
  while (iterator.hasNext())
  {
  System.out.println((String) iterator.next());
  }
  }
  }

 

  上面代码的输出是:

  Happy
  New
  Year
  2006



3.Java单链表的创建与遍历

程序目的:测试单链表的创建与遍历算法
   程序组成:由Node.java,List.java和c8_2.java三部分组成
   程序的构思:先创建两个空链表f1和f2,然后创建三个结点Node1,Node2和Node3,并使用头插法将这三个结点添加到链表f1中;此后,我们再创建结点Node4,Node5和Node6,并使用尾插法将这三个结点添加到链表f2中;最后,遍历链表f1和f2,分别输出两个链表中的每个结点。

一、结点类程序Node.java
public class Node  //定义结点类
{
  Object num, name, score;   //结点中的数据属性
  Node next;  //结点中的指针属性,指向下一个Node对象的引用
  public Node(Object obj1,Object obj2,Object obj3)  //构造方法
  {
    num=obj1;
    name=obj2;
    score=obj3;
    next=null;
  }
}


二、链表类程序List.java
public class List  //定义链表类
{
  Node head,tail;   //head表示链表的头结点,tail表示链表的尾结点
  String Lname;  //Lname表示链表的名字属性
  //创建空链表时调用构造方法1str为用户创建链表时指定的链表对象名
  public List(String str)
  {
    Lname=str; head=null; tail=null;
  }
  //创建空链表时调用构造方法2,若用户没给链表对象名,则用List作为默认名
  public List()
  {
    Lname="List"; head=null; tail=null;
  }
  //创建一个结点
  //添加结点n到链表头
  public void appendToFront(Node n)
  {
    if(head==null)   //链表为空,添加第一个结点到链表中
    {  head=n;  tail=n;}
    else
    {  n.next=head;  head=n; }  //插入结点n到链表头部,
  }
  //添加结点n到链表尾
  public void appendToTail(Node n)
  {
    if(head==null)   //链表为空,添加第一个结点到链表中
    {  head=n;  tail=n;}
    else
    { tail.next=n;  tail=n; }  //插入结点n到链表的尾部
  }

//遍历一个单链表
  public void visitAllNode()
  {
    Node p=head;   //设phead结点的引用
    System.out.println(this.Lname);
    if(p==null)System.out.println("该链表为空链表");
    else
    while(true)
    {
      System.out.print(p.num.toString()+"  "+p.name.toString()+"  "+p.score.toString()+" -> ");
      if(p.next==null)break; //再没有需要访问的结点
      p=p.next;  //设p为下一个结点的引用
    }
  }


三、测试程序c8_2.java
public class c8_2  //创建链表、添加结点及打印链表中所有结点测试程序
{
  public static void main(String[] args)
  {
    //创建整型对象
    Integer n1=new Integer(1001),n2=new Integer(1008);
    Integer n3=new Integer(1003),n4=new Integer(1002);
    Integer n5=new Integer(1009),n6=new Integer(1005);
    //创建浮点型对象
    Double s1=new Double(89.0);
    Double s2=new Double(64.5);
    Double s3=new Double(90.0);
    Double s4=new Double(79.0);
    Double s5=new Double(96.5);
    Double s6=new Double(80.0);
    //创建结点对象
    Node node1=new Node(n1,"Li1",s1),node2=new Node(n2,"Li2",s2),
    node3=new Node(n3,"Li3",s3),node4=new Node(n4,"Li4",s4),
    node5=new Node(n5,"Li5",s5),node6=new Node(n6,"Li6",s6);
    //创建f1链表对象
    List f1=new List("f1List");
    //将结点插入到f1链表头部
    f1.appendToFront(node1);
    f1.appendToFront(node2);
    f1.appendToFront(node3);
    List f2=new List("f2list");
    //将结点插入到f2链表尾部
    f2.appendToTail(node4);
    f2.appendToTail(node5);
    f2.appendToTail(node6);
    //打印f1链表中的所有结点
    f1.visitAllNode(); System.out.println();
    //打印f2链表中的所有结点
    f2.visitAllNode(); System.out.println();
  }
}

程序的运行结果:  

  f1List
  1003  Li3  90.0 -> 1008  Li2  64.5 -> 1001  Li1  89.0 ->
  f2list
  1002  Li4  79.0 -> 1009  Li5  96.5 -> 1005  Li6  80.0 ->

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值