数据结构训练任务

题目如下:

1、 定义一个方法 listTest(ArrayList<String> list, String name),要求返回
name 在 list 里面第一次出现的索引,如果 name 没出现过返回-1。
2、已知数组存放一批 QQ 号码,长度 5-11 位,
String[] strs = {"10001","10086","12347806666","45612378901","10001","12347806666"}。
将该数组里面的所有 qq 号都存放在 LinkedList 中,将 list 中重复元素删
除,将 list 中所有元素分别用迭代器和增强 for 循环打印出来。

这俩题都不是很难,所以直接上源码(注释很详细)

第一题!:

import java.util.ArrayList;
import java.util.Scanner;
//1、 定义一个方法 listTest(ArrayList<String> list, String name),要求返回
//name 在 list 里面第一次出现的索引,如果 name 没出现过返回-1。
public class Demo {
    public static void main(String[] args) {
        ArrayList<String> name = new ArrayList<>();
        name.add("白日梦想家");      //往name数组中先添加元素
        name.add("午夜实干家");
        name.add("哈哈哈");
        m: while (true) {
            System.out.println("----欢迎使用name查找系统----");
            Scanner str = new Scanner(System.in);
            System.out.println("1-查找,2-退出");
            int o=-1;
            try {o = str.nextInt();} //因为用户输入时可能输的不是数字,所以try一下
            catch (Exception e){
                System.out.println("请输入合法的数字!");
            }
            if (o == 1) {
                System.out.println("请输入您要找的name:");
                Scanner n = new Scanner(System.in);
                String text = n.nextLine();
                int i = name.indexOf(text);  //返回索引给i
                if (i == -1) {
                    System.out.println("您要找的name不存在!请重新输入");
                } else {
                    System.out.println("您要找的name的索引为:" + i);
                }
            }else if(o==2){
                System.out.println("感谢您的使用!欢迎下次再来!");
                break m;
            }
            else{
                System.out.println("输入有误请重新输入!");
            }
        }
    }
}

第二题:

import java.util.Iterator;
import java.util.LinkedList;
//2、已知数组存放一批 QQ 号码,长度 5-11 位,
//String[] strs = {"10001","10086","12347806666","45612378901","10001","12347806666"}。
//将该数组里面的所有 qq 号都存放在 LinkedList 中,将 list 中重复元素删
//除,将 list 中所有元素分别用迭代器和增强 for 循环打印出来。
public class Demo2 {
    public static void main(String[] args) {
        String [] strs = {"10001","10086","12347806666","45612378901","10001","12347806666"};
        LinkedList<String> list = all(strs);
        System.out.println("----增强for:----");
        for (String i:list) {
            System.out.println(i);
        }
        System.out.println("----迭代器:----");
        Iterator<String> iter = list.iterator(); //申请迭代器
        while (iter.hasNext()){       //如果hasNext返回true则证明有下一个元素
            String s = iter.next();   //下一个元素给对象s
            System.out.println(s);    //输出下一个元素
        }
    }
    public static LinkedList<String> all(String[] strings){  //筛选最终要遍历出去的字符串
        LinkedList<String> list = new LinkedList();
        for(int i = 0;i<strings.length;i++){    //如果i<传进来的数组长度,继续遍历
            if(list.contains(strings[i])){      //判断list中是否有相同的
                continue;           //有的话跳出循环
            }
            list.add(strings[i]);    //没有的话,存
        }
        return list;
    }
}

看完若还有疑问,欢迎私信我!我都会一一解答~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值