import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;import org.junit.Test;/*** 集合 : 解决批量的对象的存储问题, 优点:长度可变,灵活,不用考虑下标.  缺点:只能存对象* 数组 : 解决批量的数据的存储问题, 优点:可以存任意类型的数据. 缺点:内存连续,长度固定,需要处理复杂的下标* * 分类 :*      Collection接口 : 只能存放无序可重复的单个对象.*             Set接口 : 只能存放无序不可重复单个对象*                 HashSet*                TreeSet*                LinkedHashSet* *            List接口 : 只能存放有序可重复单个对象, 和数组最像的*                 ArrayList 基于数组实现*               Vector 基于数组实现 *                 LinkedList 基于链表实现       * *         Map接口 : 存放的是双对象.*/
class Point {int x;int y;public Point(int x, int y) {this.x = x;this.y = y;}@Overridepublic String toString() {return "Point [x=" + x + ", y=" + y + "]";}@Overridepublic boolean equals(Object obj) {if (obj instanceof Point) {if (this.x == ((Point)obj).x && this.y == ((Point)obj).y) {return true;}}return false;}@Overridepublic int hashCode() {return Integer.parseInt(x + "" + y);}
}public class CollectionTest {@Testpublic void testIterator() {List<Integer> list = new LinkedList<Integer>();list.add(100);list.add(50);list.add(40);list.add(500);list.add(200);// 使用迭代器, 每次使用迭代器时必须获取新鲜的, 即时通过集合对象方法获取Iterator<Integer> it = list.iterator(); // 内部指针指向第一个元素前面//list.add(300); 集合内容一旦发生变化, 以上的迭代器就不可用的了.while (it.hasNext()) { // 如果内部指针的后面有元素,返回trueInteger integer = it.next(); // 真的获取下一个对象, 并同时移动内部指针, 注意!!! 在循环中next方法只允许调用一次!!!!!!!System.out.println(integer);}}@Testpublic void testArrayList2() {// 1 创建一个List集合对象, 添加20个30以内的随机整数, 并打印输出List<Integer> list = new ArrayList<Integer>(); // 泛型 : 特别指定集合中只能存储某种类型的对象// 一旦使用泛型, 集合类型固定, 类型安全//list.add("abc");for (int i = 0; i < 20; i++) {list.add((int)(Math.random() * 30));}int sum = 0;for (Integer integer : list) { // 一旦使用了泛型, 集合中的元素肯定是某类型, 所以可以直接取出sum += integer;}System.out.println("sum:" + sum);for (Integer object : list) {System.out.println(object);}}@Testpublic void exer4() {// 声明一个Set集合,只能保存Double类型的数据, 保存10个随机100以内的数, 找出最大值和最小值,打印输出.Set<Double> set = new HashSet<Double>();for (int i = 0; i < 10; i++) {set.add(Math.random() * 100);}double maxValue = -Double.MAX_VALUE; // 先假定它最小for (Double double1 : set) {if (double1 > maxValue) {maxValue = double1;}}System.out.println(set);System.out.println("max:" + maxValue);}@Testpublic void testArrayList() {List list = new ArrayList(); // 有序可重复list.add(200);list.add(new Integer(200));list.add("abc");list.add("xxx");list.add("abc"); // 500, 200, 200, abc, xxx, abclist.add(0, 500); // 非末端插入list.set(0, 5000); // 替换System.out.println(list);list.remove(Integer.valueOf(200)); // 当成下标来用list.remove(list.size() - 1); System.out.println(list);//[5000, 200, abc, xxx]Object object = list.get(2); // 获取下标为2的元素System.out.println(object);// List集合遍历System.out.println("-------------------------------------");for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}System.out.println("-------------------------------------");for (Object obj : list) {System.out.println(obj);}}@Testpublic void exer3() {// 1 创建一个List集合对象, 添加20个30以内的随机整数, 并打印输出List list = new ArrayList();for (int i = 0; i < 20; i++) {list.add((int)(Math.random() * 30));}for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}}@Testpublic void exer32() {// 1 创建一个List集合对象, 添加20个30以内的随机整数, 并打印输出// 2 添加20个30以内的随机整数, 不允许重复.List list = new ArrayList();while (list.size() != 20) {int rand = (int)(Math.random() * 30);// 判断已经存在的元素中是否包含这个对象, 如果不包含才添加if (!list.contains(rand)) {list.add(rand);}}for (Object object : list) {System.out.println(object);}}// 写一个类Point, 坐标随机生成,5以内// 创建20个Point对象, 添加到Set集合中, 遍历打印输出@Testpublic void exer2() {Set set = new HashSet();set.add(new Point(10, 20)); // 元素重复的标准是 对象.equals(新元素)返回true, 并且hashCode()方法的返回值也一样set.add(new Point(10, 20));for (Object object : set) {System.out.println(object);}}@Testpublic void testHashSet() {Set set = new HashSet(); // 无序并内容不可重复boolean b1 = set.add(new Integer(200));System.out.println(b1);set.add(300);// set.add(Integer.valueOf(300));set.add("abc");set.add(new Point(10, 30));boolean b4 = set.add(200);// 再次添加相同的元素会失败!!System.out.println(b4);set.add("xxx");boolean b6 = set.add("abc"); // 再次添加相同的元素会失败!!System.out.println(b6);System.out.println("size:" + set.size()); // 获取容量System.out.println(set);set.remove("abc");set.remove(300);boolean b7 = set.remove(300);System.out.println(b7);System.out.println(set);System.out.println("------------------------------------");// 集合遍历, 把其中所有元素挨个访问, 增强型for/*for (元素类型 对象 : 集合) {System.out.println(对象);}*/for (Object object : set) {System.out.println(object);}}@Testpublic void exer13() {// 1 创建一个Set集合, 2 保存20个40以内的随机整数, 必须保证20个.Set set = new HashSet();for (int i = 0; i < 20; i++) {boolean b = set.add((int)(Math.random() * 40));if (!b) {i--;}}// 遍历for (Object obj : set) {System.out.println(obj);}}@Testpublic void exer12() {// 1 创建一个Set集合, 2 保存20个40以内的随机整数, 必须保证20个.Set set = new HashSet();while (set.size() != 20) {set.add((int)(Math.random() * 40));}System.out.println("size:" + set.size());// 遍历for (Object obj : set) {System.out.println(obj);}}@Testpublic void exer1() {// 1 创建一个Set集合, 保存20个40以内的随机整数, 遍历打印输出Set set = new HashSet();for (int i = 0; i < 20; i++) {set.add((int)(Math.random() * 40));}System.out.println("size:" + set.size());// 遍历for (Object obj : set) {System.out.println(obj);}}
}package com.guigu.javae.collection;import java.util.List;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.TreeSet;import org.junit.Test;import com.atguigu.javase.home.Student;public class CollectionTest {@Testpublic void test6() {List<Student> list = new ArrayList<Student>();for (int i = 0; i < 10; i++) {list.add(new Student(i + 1, 5, (int)(Math.random() * 101)));}System.out.println(list);Collections.sort(list); // 需要可比较System.out.println(list);Collections.reverse(list); //反转 不需要可比较System.out.println(list);Collections.shuffle(list); //不需要可比较System.out.println(list);System.out.println("max:" + Collections.max(list));// 需要可比较System.out.println("min:" + Collections.min(list));// 需要可比较}@Testpublic void test5() {List<Integer> list = new ArrayList<Integer>();for (int i = 0; i < 10; i++) {list.add((int)(Math.random() * 20));}System.out.println(list);Collections.sort(list);System.out.println(list);Collections.reverse(list); //反转System.out.println(list);Collections.shuffle(list);System.out.println(list);}@Testpublic void test1() {Set<Integer> set1 = new TreeSet<Integer>(); // 无序(不按添加顺序), 内部使用了自然排序set1.add(100);set1.add(20);set1.add(0);set1.add(50);set1.add(10);set1.add(30);set1.add(40);for (Integer integer : set1) {System.out.println(integer);}System.out.println("---------------------------");Set<Student> set2 = new TreeSet<Student>(); // 添加的对象所属的类必须实现Comparable. 原因是要实现自然排序,必须对象可比// 去重不再依据equals和hashCode, 依据的是compareTo, 如果方法返回0,代表对象重复set2.add(new Student(3, 1, 100));set2.add(new Student(2, 2, 80));set2.add(new Student(1, 3, 30));set2.add(new Student(5, 4, 40));set2.add(new Student(2, 5, 50));for (Student student : set2) {System.out.println(student);}}@Testpublic void exer1() {Map<String, String> map = new HashMap<String, String>();String url = "q=iphone6s&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&ie=utf8&initiative_id=tbindexz_20160813&app=detailproduct&through=1";String[] parameters = url.split("&");for (int i = 0; i < parameters.length; i++) {//System.out.println(parameters[i]);String[] arr = parameters[i].split("=");map.put(arr[0],arr[1]);}// 遍历Set<String> keys = map.keySet();Iterator<String> iterator = keys.iterator();while (iterator.hasNext()) {String parmName = iterator.next();String parmValue = map.get(parmName);System.out.println(parmName + "------------" + parmValue);}}@Testpublic void test3() {Map<String, Student> map = new HashMap<String, Student>();//Student s1 = new Student(1, 1, 10);map.put("s1", new Student(1, 1, 10));map.put("s2", new Student(2, 2, 20));map.put("s3", new Student(3, 3, 30));}@Testpublic void test4() throws FileNotFoundException, IOException {Properties properties = new Properties();properties.load(new FileInputStream("config.properties")); // 自动处理文本文件,并其中的内容,其中的=左边的字符串作为了键,右边的字符串作为了值String host = properties.getProperty("host");int port = Integer.parseInt(properties.getProperty("port").trim());String abc = properties.getProperty("abc");System.out.println(host);System.out.println(port);System.out.println(abc);}@Testpublic void test2() {Set<Integer> set = new HashSet<Integer>();set.add(1);set.add(2);set.add(5);set.add(3);set.add(4);set.add(3);System.out.println(set);}
}
package com.guigu.javase.home;import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;import org.junit.Test;public class HomeWork {@Testpublic void work1() {// 写一个Student类, 包含属性id[1-30), grade[1-6], score[0-100], 所有属性都是随机生成// 创建一个Set集合, 保存20个对象, 如果两个对象的id是一样的,则不允许添加.// 使用迭代器遍历集合,打印输出对象的信息, 并找出分数最高的同学和分数最低的同学, 最后打印输出最高分和最低分同学信息.Set<Student> set = new HashSet<Student>();for (; set.size() != 20;) {int id = (int)(Math.random() * 29 + 1);int grade = (int)(Math.random() * 6 + 1);double score = (int)(Math.random() * 1001) / 10.0;set.add(new Student(id, grade, score));}for (Student student : set) {System.out.println(student);}System.out.println("---------------------------");Student maxScoreStudent = null;Student minScoreStudent = null;Iterator<Student> iterator = set.iterator();while (iterator.hasNext()) {Student student = iterator.next();if (maxScoreStudent == null) {maxScoreStudent = student;minScoreStudent = student;}if (student.getScore() > maxScoreStudent.getScore()) {maxScoreStudent = student;} if (student.getScore() < minScoreStudent.getScore()) {minScoreStudent = student;}}System.out.println(maxScoreStudent);System.out.println(minScoreStudent);}
}class Student implements Comparable<Student> {private int id;private int grade;private double score;public Student() {}public Student(int id, int grade, double score) {super();this.id = id;this.grade = grade;this.score = score;}public int getId() {return id;}public void setId(int id) {this.id = id;}public int getGrade() {return grade;}public void setGrade(int grade) {this.grade = grade;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}@Overridepublic String toString() {return "Student [id=" + id + ", grade=" + grade + ", score=" + score + "]";}/*@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + id;return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Student other = (Student) obj;if (id != other.id)return false;return true;}*/@Overridepublic int compareTo(Student o) {return (int)(this.score - o.score);}
}
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;import org.junit.Test;public class MapTest {@Testpublic void test1() {Map<Integer, String> map = new HashMap<Integer, String>(); //空词典map.put(5, "five"); // 写入词条map.put(2, "two");map.put(0, "zero");map.put(4, "four");map.put(2, "TWO"); // 如果出现键相同的情况, 键对应的老的值就会被覆盖System.out.println(map.size());String value = map.get(4); // 根据键,获取值, 查词典System.out.println(value);map.remove(0); // 把0和"zero"同时删除// 遍历Map集合,先遍历它的所有键Set<Integer> set = map.keySet(); // 获取map中的所有键的一个Set集合Iterator<Integer> it = set.iterator();while (it.hasNext()) {Integer key = it.next();String valueString = map.get(key);System.out.println(key + "-----------------" + valueString);}}
}

java学习之路 之 Java集合练习题相关推荐

  1. java学习之路8——Java集合框架

    一.什么是集合 概念:对象的容器,定义了对多个对象进行操作的常用方法.可以实现数组的功能. 和数组区别: (1)数组长度固定,集合长度不固定 (2)数组可以存储基本类型和引用类型,集合只能存储引用类型 ...

  2. Java学习之路-day-09 ArrayList集合

    Java ArrayList集合 每日一句 1. ArrayList 1.1 ArrayList类概述 1.2 ArrayList类常用方法 1.3 ArrayList存储字符串并遍历 1.4 Arr ...

  3. Java学习之路4——Java数组

    教学视频来源链接 一.数组概述 数组是相同类型数据的有序集合. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成. 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问 ...

  4. 小W的Java学习之路:java基础(四)-数组

    1.为什么要有数组? 数组可以存储相同类型的多个数据,把多个数据放在一个数组中方便使用如果只需要定义一个变量需要数组么?不需要 2.数组的定义 动态初始化:数据类型[] 数组名 = new 数据类型[ ...

  5. 萌新的java学习之路——第一周

    萌新的java学习之路--第一周 第一周的学习 这是我学习Java的第一周,写这个博客更多的时为了总结自己这一周的学习情况,如果有人看到我写的博客,有什么问题的话,可以问我.虽然我也是一个小白,但我会 ...

  6. java学习之路目录(已完结)

    java学习之路目录(持续更新中-) 第一阶段 javaSE(完结) 序号 标题 内容 001 java初识 java语言特点.体系结构.运行机制 002 java SE基础语法 注释.关键字.变量. ...

  7. Java学习之路——接口

    Java学习之路--接口 概述 总所周知,我们是父母的孩子.我们的身上既继承了爸爸的基因也继承了妈妈的基因.这就是多继承. 然而在 Java 程序中,是不支持多继承的.Java 仅仅支持单继承.但是接 ...

  8. java学习之路之javaSE基础1

    <h2>java学习之路之javaSE基础1</h2> <div> ###01.01_计算机基础知识(计算机概述)(了解) * A:什么是计算机?计算机在生活中的应 ...

  9. Java学习之路-预科

    Java学习之路-预科 第一章 学习计算机的基本知识 文章目录 Java学习之路-预科 前言 一.什么是计算机? 二.硬件及冯诺依曼结构 1.计算机硬件 1.1 计算机硬件组成 1.2 什么是装机 1 ...

  10. java学习之路2--简单工厂模式实现饮料自动贩卖机

    java学习之路2 用简单工厂模式实现饮料自动贩卖机 功能简介 具体实现 1.简单工厂模式 2.代码 总结 用简单工厂模式实现饮料自动贩卖机) 功能简介 接收用户输入的信息,选择购买的饮料. 可供选择 ...

最新文章

  1. 超实用 Linux下通过VNC安装Oracle
  2. 大环境下瑟瑟发抖辞职的第二天,拿了两个 offer
  3. Java生鲜电商平台-深入理解微服务SpringCloud各个组件的关联与架构
  4. OGRE 入门 二、Basic Tutorial 1 : An introduction to the most basic Ogre constructs
  5. java功夫手机游戏6_我功夫贼六手游下载
  6. 可视化idea_给IDEA换个酷炫的主题,这个有点哇塞啊!
  7. JavaScript创建对象的三种方式之利用构造函数创建对象及使用方法(3)
  8. 中国氮化镓(GaN)行业“十四五”前景预测及投资风险预测报告2021年版
  9. 图形推理1000题pdf_江苏省考倒计时4天!再看一遍判断推理各个模块重点!
  10. 电磁流量计的工作原理
  11. python如何设置清华镜像源
  12. 经典语录总结:识人篇
  13. 怎么实现一个计算一年中有多少周?
  14. 真正的Java学习从入门到精通
  15. 数字图像处理与python实现-带通滤波器
  16. amd显卡跑人工神经网络,amd显卡能跑神经网络吗
  17. css3直线运动_css3动画--边框线条动画
  18. Bootstrap Method
  19. 1822 - Failed to add the foreign key constraint. Missing index for constraint ‘fk_tno_course‘ in the
  20. 根据电话号码获取联系人姓名

热门文章

  1. awg线径与电流_AWG线径电流对照表
  2. linux搭建sftp服务器
  3. 《人工智能:一种现代的方法》总结 第二章
  4. scala下载和安装——aboutyun
  5. Ubuntu上Qt安装以及配置完整步骤
  6. 上海工程技术大学c语言商店存货管理系统,商店存货管理系统.docx
  7. 怎么下载英文文献呢?
  8. 【算法4总结】第一章:基础
  9. 拳王虚拟项目公社:虚拟资源自动化挣钱,空手套白狼的躺赚技术
  10. Fragstats 软件安装与下载步骤(附安装包)