一、产生10个1-100的随机数,并放到一个数组中,把数组中大于等于10的数字放到一个list集合中,并打印到控制台。

import java.util.*;
class Test
{public static void main(String[] args){ArrayList al = new ArrayList();int[] arr = new int[10]; //标明长度for(int i=0;i<arr.length;i++){arr[i] = (int)(Math.random()*100+1);}for(int i=0;i<arr.length;i++){if(arr[i]>=10)al.add(arr[i]);}Iterator it = al.iterator();while(it.hasNext()){System.out.println(it.next());}}
}

练习二:Collection集合练习

一、定义一个方法listTest(ArrayList al, Integer s),要求返回s在al里面第一次出现的索引,如果s没出现过返回-1。

import java.util.*;
class Test
{//定义一个方法listTest(ArrayList<Integer> al, Integer s),//要求返回s在al里面第一次出现的索引,如果s没出现过返回-1。static int listTest(ArrayList<Integer> al, Integer s){return al.indexOf(s);}public static void main(String[] args){ArrayList<Integer> al = new ArrayList<Integer>();al.add(1);al.add(2);al.add(4);al.add(3);al.add(5);System.out.println(Test.listTest(al,3));}
}

已知数组存放一批QQ号码,QQ号码最长为11位,最短为5位String[] strs = {“12345”,“67891”,“12347809933”,“98765432102”,“67891”,“12347809933”}。
将该数组里面的所有qq号都存放在LinkedList中,将list中重复元素删除,将list中所有元素分别用迭代器和增强for循环打印出来。

import java.util.*;
class Test
{public static void main(String[] args){//方法一:String[] strs = {"12345","67891","12347809933","98765432102","67891","12347809933"};LinkedList<String> al = new LinkedList<String>();for(int i=0;i<strs.length;i++){al.add(strs[i]);}for(int j=0;j<al.size();j++){for(int k=j+1;k<al.size();k++){if(al.get(j).equals(al.get(k))){al.remove(k);}}}Iterator it = al.iterator();while(it.hasNext()){System.out.println(it.next());}//方法二:直接使用SetLinkedHashSet<String> al1 = new LinkedHashSet<String>();al.add("12345");al.add("67891");//因为String对象的equals方法就是判别两个字符串是否相同,所以不需重写equals方法al.add("12347809933");al.add("98765432102");al.add("67891");al.add("12347809933");Iterator it1 = al1.iterator();while(it1.hasNext()){System.out.println(it1.next());}}
}

练习四:HashSet的使用
双色球规则:双色球每注投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1—33中选择;蓝色球号码从1—16中选择;请随机生成一注双色球号码。(要求同色号码不重复)

import java.util.*;
class Test
{public static void main(String[] args){HashSet<Integer> hs = new HashSet<Integer>();int i = 0;while(i<6){Random rand = new Random();int randNum = rand.nextInt(33)+1;if(!hs.contains(randNum)){hs.add(randNum);i++;}}boolean flag = true;while(flag){Random blue = new Random();int blueNum = blue.nextInt(16)+1;if(!hs.contains(blueNum)){hs.add(blueNum);flag = false;}}Iterator it = hs.iterator();while(it.hasNext()){System.out.println(it.next());}}
}

练习五:Comparable和Comparator的使用

分别用Comparable和Comparator两个接口对下列四位同学的成绩做降序排序,如果成绩一样,那在成绩排序的基础上按照年龄由小到大排序。

注意:Comparator不在所要比较的对象的类中实现,而是另外实现创建类实现Comparator中的compare,再在容器中加比较器,而Comparable在所要比较的对象的类中实现compareTo方法。

方法一:使用Comparator

import java.util.*;
class MyCompare implements Comparator<Student>
{public int compare(Student s1,Student s2){if(s1.getScore()>s2.getScore())return 1;else if(s1.getScore()<s2.getScore())return -1;else{if(s1.getAge()>s2.getAge())return 1;if(s1.getAge()<s2.getAge())return -1;return s1.getName().compareTo(s2.getName());}}
}
class Student
{private String name;private int age;private float score;Student(String name,int age,float score){this.name = name;this.age = age;this.score = score;}public String getName(){return name;}public int getAge(){return age;}public float getScore(){return score;}}
class Test
{public static void main(String[] args){TreeSet ts = new TreeSet(new MyCompare());ts.add(new Student("liusan",20,90.0F));ts.add(new Student("lisi",22,90.0F));ts.add(new Student("wangwu",20,90.0F));ts.add(new Student("sunliu",22,100.0F));Iterator it = ts.iterator();while(it.hasNext()){Student stu = (Student)it.next();System.out.println("score="+stu.getScore()+" age="+stu.getAge()+" name="+stu.getName());}}
}

方法二:使用Comparable

import java.util.*;
class Student implements Comparable<Student>
{private String name;private int age;private float score;Student(String name,int age,float score){this.name = name;this.age = age;this.score = score;}public int compareTo(Student stu){if(this.age>stu.age)return 1;else if(this.age < stu.age)return -1;else{return this.getName().compareTo(stu.getName());}}public String getName(){return name;}public int getAge(){return age;}public float getScore(){return score;}
}
class Test
{public static void main(String[] args){TreeSet ts = new TreeSet();ts.add(new Student("liusan",20,90.0F));ts.add(new Student("lisi",22,90.0F));ts.add(new Student("wangwu",20,90.0F));ts.add(new Student("sunliu",22,100.0F));Iterator it = ts.iterator();while(it.hasNext()){Student stu = (Student)it.next();System.out.println("score="+stu.getScore()+" age="+stu.getAge()+" name="+stu.getName());}}
}

练习六:Map集合的使用(一)

一、现在有一个map集合如下:

Map<Integer,String> map = new HashMap<Integer, String>();
map.put(1, “张三丰”);
map.put(2, “周芷若”);
map.put(3, “汪峰”);
map.put(4, “灭绝师太”);

要求:

1.遍历集合,并将序号与对应人名打印。

2.向该map集合中插入一个编码为5姓名为李晓红的信息

3.移除该map中的编号为1的信息

4.将map集合中编号为2的姓名信息修改为"周林"

Map遍历方式一:通过keySet获取全部的键的Set集合。

class Test
{public static void main(String[] args){Map<Integer,String> map = new HashMap<Integer,String>();map.put(1, "张三丰");map.put(2, "周芷若");map.put(3, "汪峰");map.put(4, "灭绝师太");map.put(5, "李晓红");map.put(2,"周林");   //因为map键是唯一的,所以放入相同键,相当于覆盖map.remove(1);//map.Set<Integer> keyset = map.keySet();Iterator it = keyset.iterator();while(it.hasNext()){Integer integer = (Integer)it.next();System.out.println("key:"+integer+" value:"+map.get(integer));}}
}

Map遍历方式二:通过entrySet()获取关系

class Test
{public static void main(String[] args){Map<Integer,String> map = new HashMap<Integer,String>();map.put(1, "张三丰");map.put(2, "周芷若");map.put(3, "汪峰");map.put(4, "灭绝师太");map.put(5, "李晓红");map.remove(1);map.put(2,"周林");   //因为map键是唯一的,所以放入相同键,相当于覆盖Set<Map.Entry<Integer, String>> keyset = map.entrySet();  //获取键值对之间关系,关系是Map.Entry的Iterator<Map.Entry<Integer, String>> it = keyset.iterator(); //迭代器迭代,迭代器里面放的是关系while(it.hasNext()){Map.Entry<Integer, String> map_entry = it.next(); //取出关系Integer key = map_entry.getKey();String value = map_entry.getValue();System.out.println("key:"+key+" value:"+value);}   }
}

练习七:Map集合的使用(二)

一、有2个数组,第一个数组内容为:[黑龙江省,浙江省,江西省,广东省,福建省],第二个数组为:[哈尔滨,杭州,南昌,广州,福州],将第一个数组元素作为key,第二个数组元素作为value存储到Map集合中。如{黑龙江省=哈尔滨, 浙江省=杭州, …}。

import java.util.*;
class Test
{public static void main(String[] args){Map<String,String> map = new HashMap<String,String>();String[] char_str1 = {"黑龙江省","浙江省","江西省","广东省","福建省"};String[] char_str2 = {"哈尔滨","杭州","南昌","广州","福州"};for(int i = 0;i<char_str1.length;i++){map.put(char_str1[i], char_str2[i]);}//遍历方式一Set<Map.Entry<String,String>> entry = map.entrySet();Iterator<Map.Entry<String,String>> it1 = entry.iterator();while(it1.hasNext()){Map.Entry<String,String> ss1 = it1.next();System.out.println("key:"+ss1.getKey()+" value:"+ss1.getValue());}//遍历方式二Set<String> ss = map.keySet();Iterator it = ss.iterator();while(it.hasNext()){String ss2 = (String)it.next();System.out.println("key:"+ss2+" value:"+map.get(ss2));}      }
}

练习八:Map集合的使用(三)

一、定义一个泛型为String类型的List集合,统计该集合中每个字符(注意,不是字符串)出现的次数。例如:集合中有”abc”、”bcd”两个元素,程序最终输出结果为:“a = 1,b = 2,c = 2,d = 1”。

import java.util.*;
class Test
{public static void main(String[] args){List<String> ls = new ArrayList<String>();ls.add("abcd");ls.add("adebc");ls.add("sffa");Iterator it = ls.iterator();String ss = "";while(it.hasNext()){ss += (String)it.next();}getEachStrNum(ss);}public static void getEachStrNum(String str){Map<Character,Integer> map = new HashMap<Character,Integer>();for(int i = 0;i<str.length();i++){char s = str.charAt(i);if(map.containsKey(s)){int num = map.get(s);map.put(s,num+1);}else{map.put(s, 1);}}Set<Map.Entry<Character,Integer>> charSet = map.entrySet(); Iterator it = charSet.iterator();while(it.hasNext()){Map.Entry<Character,Integer> entry = (Map.Entry<Character,Integer>)it.next();System.out.print(entry.getKey()+" = "+ entry.getValue()+" ");}}
}

练习九:Map集合的使用(四)
一、利用Map,完成下面的功能:

从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该 年没有举办世界杯,则输出:没有举办世界杯。

//tips:参阅Map接口containsKey(Object key)方法

二、在原有世界杯Map 的基础上,增加如下功能: 读入一支球队的名字,输出该球队夺冠的年份列表。 例如,读入“巴西”,应当输出 1958 1962 1970 1994 2002 读入“荷兰”,应当输出 没有获得过世界杯

//tips:参阅Map接口containsValue(Object value)方法

示例:

import java.util.*;
//这种一一对应的一定要想到Map//定义一个泛型为String类型的List集合,统计该集合中每个字符(注意,不是字符串)出现的次数。
//例如:集合中有”abc”、”bcd”两个元素,
//程序最终输出结果为:“a = 1,b = 2,c = 2,d = 1”。
class Test
{public static void main(String[] args){HashMap<Integer,String> map = new HashMap<Integer,String>();map.put(1930,"乌拉圭");map.put(1934,"意大利");map.put(1938,"意大利");map.put(1950,"乌拉圭");map.put(1954,"西德");map.put(1958,"巴西");map.put(1962,"巴西");map.put(1966,"英格兰");map.put(1970,"巴西");map.put(1974,"西德");map.put(1978,"阿根廷");map.put(1982,"意大利");map.put(1986,"阿根廷");map.put(1990,"西德");map.put(1994,"巴西");map.put(1998,"法国");map.put(2002,"巴西");map.put(2006,"意大利");map.put(2010,"西班牙");map.put(2014,"德国");System.out.println("请输入年份:");Scanner sc = new Scanner(System.in);int inputNum = sc.nextInt();Set<Map.Entry<Integer,String>>  set = map.entrySet();Iterator it = set.iterator();while(it.hasNext()){Map.Entry<Integer,String> entry = (Map.Entry<Integer,String>)it.next();if(entry.getKey()==inputNum){System.out.println(entry.getKey()+"年获得世界杯冠军的是:"+entry.getValue());}}String temp = sc.nextLine();System.out.println("请输入国家名称");String inputStr = sc.nextLine();// Set<Map.Entry<Integer,String>>  set1 = map.entrySet();Iterator it1 = set.iterator();System.out.print("获得冠军的年份有:");int flag = 0;while(it1.hasNext()){Map.Entry<Integer,String> entry1 = (Map.Entry<Integer,String>)it1.next();if(entry1.getValue().equals(inputStr)){System.out.print(entry1.getKey()+" ");flag++;}}if(flag==0){System.out.println("没有获得过世界杯");}}
}

练习十:综合练习

1.站编号和站名对应关系如下:

        1=朱辛庄2=育知路3=平西府4=回龙观东大街5=霍营//....

将以上对应关系的数据存储到map集合中,key:表示站编号,value:表示站名,并遍历打印(可以不按顺序打印):

   第10站: 森林公园南门第6站: 育新第12站: 奥体中心第13站: 北土城//...

2.计算地铁票价规则:

   总行程 3站内(包含3站)收费3元,3站以上但不超过5站(包含5站)的收费4元,5站以上的,在4元的基础上,每多1站增加2元,10元封顶;

3.打印格式(需要对键盘录入的上车站和到达站进行判断,如果没有该站,提示重新输入,直到站名存在为止):

   注意:每站需要2分钟请输入上车站:沙河您输入的上车站:沙河不存在,请重新输入上车站:上地您输入的上车站:上地不存在,请重新输入上车站:朱辛庄请输入到达站:沙河您输入的到达站:沙河不存在,请重新输入到达站:西二旗您输入的到达站:西二旗不存在,请重新输入到达站:西小口从朱辛庄到西小口共经过6站收费6元,大约需要 12分钟
import java.util.*;class Test
{public static void main(String[] args){HashMap<Integer,String> map = new HashMap<Integer,String>();map.put(1, "朱辛庄");map.put(2, "育知路");map.put(3, "平西府");map.put(4, "回龙观东大街");map.put(5, "霍营");map.put(6, "育新");map.put(7, "西小口");map.put(8, "永泰庄");map.put(9, "林萃桥");map.put(10, "森林公园南门");map.put(11, "奥林匹克公园");map.put(12, "奥体中心");map.put(13, "北土城");String upStation="";String downStation="";Scanner sc = new Scanner(System.in);System.out.println("请输入上车的车站:");boolean flag = true;Set<Map.Entry<Integer, String>> entry = map.entrySet();upStation = sc.nextLine();int upNum=0;int downNum=0;while(flag){Iterator it = entry.iterator();while(it.hasNext()){Map.Entry<Integer, String> map_entry =(Map.Entry<Integer, String>)it.next();//System.out.println(map_entry.getKey()+" "+map_entry.getValue());if(map_entry.getValue().equals(upStation)){//System.out.println(map_entry.getKey()+" "+map_entry.getValue());upNum = map_entry.getKey();flag = false;}}if(flag == true){System.out.println("请重新输入:");upStation = sc.nextLine();}}System.out.println("请输入下车的车站:");boolean flag1 = true;downStation = sc.nextLine();while(flag1){Iterator it = entry.iterator();while(it.hasNext()){Map.Entry<Integer, String> map_entry =(Map.Entry<Integer, String>)it.next();if(map_entry.getValue().equals(downStation)){downNum = map_entry.getKey();flag1 = false;}}if(flag1 == true){System.out.println("请重新输入");downStation = sc.nextLine();}}if(downNum-upNum<=3){System.out.println("从"+upStation+"到"+downStation+"收费"+3);}else if(downNum-upNum>3 & downNum-upNum<=5){System.out.println("从"+upStation+"到"+downStation+"收费"+4);}else if (downNum-upNum>5 & downNum-upNum<=9){int prize=(downNum-upNum-5)*2+4;if (prize>=10)prize=10;System.out.println("从"+upStation+"到"+downStation+"收费"+prize);}elseSystem.out.println("从"+upStation+"到"+downStation+"收费"+10);  }
}

关于java集合的练习相关推荐

  1. java 集合 接口_Java集合之Collection接口

    1 - Java集合介绍 /* 1. 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象 的操作,就要对对象进行存储. 2. 另一方面,使用Array存储对象方面具有一些弊 端,而 ...

  2. java 头尾 队列_超详细的java集合讲解

    1 集合 1.1 为什么会出现集合框架 [1] 之前的数组作为容器时,不能自动拓容 [2] 数值在进行添加和删除操作时,需要开发者自己实现添加和删除. 1.2 Collection接口 1.2.1 C ...

  3. java集合总结_Java中集合总结

    Java数组的长度是固定的,为了使程序能够方便地存储和操作数目不固定的一组数据,JDK类库提供了Java集合,这些集合类都位于java.util包中,但是与数组不同的是,集合中不能存放基本类型数据,而 ...

  4. 考考基础部分,谈谈Java集合中HashSet的原理及常用方法

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:工匠初心 cnblogs.com/LiaHon/p/1125 ...

  5. Java集合框架综述,这篇让你吃透!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:平凡希 cnblogs.com/xiaoxi/p/60899 ...

  6. 【Java集合框架】ArrayList类方法简明解析(举例说明)

    本文目录 1.API与Java集合框架 2.ArrayList类方法解析 2.1 add() 2.2 addAll() 2.3 clear() 2.4 clone() 2.5 contains() 2 ...

  7. Java基础篇:Java集合

    文章目录 1.概述 2.Collection接口 2.1 Collection接口方法 2.2 Iterator迭代器接口 2.3 Collection子接口之:List接口 2.4 Collecti ...

  8. java奇怪的问题_一个奇怪的Java集合问题

    int size = list.size(); Integer existIndex = -1; for (int index = 0; index < size; index++) { Pho ...

  9. Java集合框架的知识总结(1)

    Java集合框架的知识总结(1) 所有集合类都位于java.util包下.集合中只能保存对象(保存对象的引用变量). Java的集合类主要由两个接口派生而出:Collection和Map,Collec ...

  10. java集合框架史上最详解(list set 以及map)

    title: Java集合框架史上最详解(list set 以及map) tags: 集合框架 list set map 文章目录 一.集合框架总体架构 1.1 集合框架在被设计时需满足的目标 1.2 ...

最新文章

  1. 【leetcode】1030. Matrix Cells in Distance Order
  2. 第 22 章 DDL - Data Definition Language
  3. java怎么给类中的私有变量赋值_Java核心技术笔记分享------第二章 类与对象
  4. linux挂载NTFS分区
  5. eplan怎样创建和修改图框_EPLAN标题页及图框的设计
  6. gan通过python实现_python通过requests库实现爬虫(二)
  7. redis 配置文件参数详解
  8. 第五章 卷积神经网络(CNN)
  9. Java 多线程执行
  10. git flow使用
  11. 一文读懂一台计算机是如何把数据传送给另外一台计算机的
  12. 高通高级技术标准总监李俨:C-V2X助力自动驾驶的招式和心法
  13. 利用 EXE4j 生成 .exe Java Swing程序
  14. 漏斗模型_绘制漏斗图
  15. 缓存之王 | Redis最佳实践开发规范FAQ
  16. 博瑞ge 加装无线 carpaly方法和效果展示
  17. 力扣第十五题-三数之和
  18. python引用自己写的文件
  19. 联通鸿蒙卡怎么样,联通腾讯大王卡对比百度大神卡:到底应该怎么选?
  20. 2022 前端一场面试及答案整理

热门文章

  1. 基本shell命令学习
  2. c++使用ODBC读取EXCEL表格
  3. 什么是WEB服务器、应用服务器
  4. Xshell6软件分享
  5. Tello SDK 开发避坑指南(持续更新)
  6. 进销存系统--ERP软件常用货物计量单位汇总
  7. 期末入门题库-C#实现
  8. 妥妥的去面试之数据结构与算法(一)
  9. 大数据学习之路(转载)
  10. VS2017之附加到进程调试