java输出set中的元素_老师,为什么遍历Set集合里的元素,一直都是有序的输出呢?...
源自:4-11 学生选课---通过 Set 集合管理课程
老师,为什么遍历Set集合里的元素,一直都是有序的输出呢?
package com.imooc.collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import javax.swing.text.Style;
public class SetTest {
public List coursesToSelect;
private Scanner console;
public Student stu;
public SetTest(){
this.coursesToSelect=new ArrayList(); //初始化
this.console=new Scanner(System.in);
}
/**
* 用于往coursesToSelect中添加备选课程
*/
public void testAdd(){
//创建一个课程对象,并通过调用add方法,添加到备选课程List中
Course cr1=new Course("1","数据结构");
coursesToSelect.add(cr1);
Course temp=(Course)coursesToSelect.get(0);
//System.out.println("添加了课程:"+temp.getId()+":"+temp.getName());
Course cr2=new Course("2","C语言");
coursesToSelect.add(0, cr2);
Course temp2=(Course)coursesToSelect.get(0);
//System.out.println("添加了课程:"+temp2.getId()+":"+temp2.getName());
//证明数据可重复
//coursesToSelect.add(cr1);
//Course temp0=(Course)coursesToSelect.get(2);
//System.out.println("添加了课程:"+temp0.getId()+":"+temp0.getName());
Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")};
coursesToSelect.addAll(Arrays.asList(course));
Course temp3=(Course)coursesToSelect.get(2);
Course temp4=(Course)coursesToSelect.get(3);
//System.out.println("添加了两门课程:"+temp3.getId()+":"+temp3.getName()+";"+temp4.getId()+":"+temp4.getName());
Course[] course2={new Course("5","高等数学"),new Course("6","大学英语")};
coursesToSelect.addAll(2, Arrays.asList(course2));
Course temp5=(Course)coursesToSelect.get(2);
Course temp6=(Course)coursesToSelect.get(3);
//System.out.println("添加了两门课程:"+temp5.getId()+":"+temp5.getName()+";"+temp6.getId()+":"+temp6.getName()+"\n");
}
/**
* 通过for each方法访问集合元素
* @param args
*/
public void testForEach(){
System.out.println("\n"+"有如下课程待选(通过for each访问):");
for(Object obj : coursesToSelect){
Course cr=(Course)obj;
System.out.println("课程:"+cr.getId()+":"+cr.getName());
}
}
/**
* 测试List的contains方法
*/
public void testListContains(){
//获取备选课程序列的第0个元素
Course course=coursesToSelect.get(0);
//打印输出coursesToSelect是否包含该course对象
System.out.println("取得课程:"+course.getName());
System.out.println("备选课程中是否包含该课程:"+course.getName()+","+coursesToSelect.contains(course));//运行测试
//创建一个新课程对象,ID和名称与course完全相同
//(但它们是两个完全不同的对象,course2并不包含在序列中,所以结果为false)
//若要为true,则只需重写equals()方法即可
Course course2=new Course(course.getId(),course.getName());
System.out.println("新创建的课程:"+course2.getName());
System.out.println("备选课程中是否包含该课程:"+course2.getName()+","+coursesToSelect.contains(course2));//运行测试
//现在要求从键盘接收一个课程名称
System.out.println("输入一个课程名称:");
String name=console.next();
Course course3=new Course();
course3.setName(name);
System.out.println("备选课程中是否包含该课程:"+course3.getName()+","+coursesToSelect.contains(course3));//运行测试
if(coursesToSelect.contains(course3)){
System.out.println("课程为:"+course3.getName()+" 的索引位置为:"+coursesToSelect.indexOf(course3));
}
}
//创建学生对象并选课
public void createStudentAndSelectCourse(){
//创建一个学生对象
stu = new Student("1", "小明");
System.out.println("欢迎学生:"+stu.getName()+"来选课!");
//循环接收3次输入的数据,存到学生信息的courses中去
for(int i=0;i<3;i++){
System.out.println("请输入要选择的课程ID:");
//从键盘接收用户输入的课程ID
String courseId=console.next();
for(Course cr : coursesToSelect){
if(cr.getId().equals(courseId)){
stu.courses.add(cr);
//Set中添加某个对象,无论加多少次,
//最终只会保留一个该对象(的引用),
//并且保留的是第一次添加的那个
//stu.courses.add(cr);
}
}
}
}
/**
* 测试Set的contains方法
*/
public void testSetContains(){
System.out.println("请输入该学生已选的课程名称:");
String name=console.next();
Course course=new Course();
course.setName(name);
System.out.println("备选课程中是否包含该课程:"+course.getName()+","+stu.courses.contains(course));//运行测试
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SetTest st=new SetTest();
st.testAdd();
st.testListContains();
st.testForEach();
//st.createStudentAndSelectCourse();
//st.testSetContains();
//st.testForEachForSet(stu);
}
/**
* 打印输出学生所选课程,证明无序
*/
public void testForEachForSet(Student stu){
System.out.println("共选择了:"+stu.courses.size()+"门课程");
for(Course cr : stu.courses){
System.out.println("选择了课程"+cr.getId()+":"+cr.getName());
}
}
}
提问者:大_神
2018-07-16 11:32
java输出set中的元素_老师,为什么遍历Set集合里的元素,一直都是有序的输出呢?...相关推荐
- java向数组中增加新元素_用Java中的新元素替换List的给定索引处的元素
java向数组中增加新元素 Given a list of the integers and we have to replace it an element from specified index ...
- java list filter 性能,java的List中使用filter過濾出符合特定條件的元素List
在實際開發中,經常需要把一個列表中的元素,按照特定條件過濾出來,放到一個新的列表中.本文給出了幾個例子,來描述解決這個問題的方法. 我們假設有一個書的List,需要找出其中id分別是3.6.8.9的書 ...
- java在程序中加入音频_在任意Java程序中播放音频
音频文件有多种格式.Java程序能够播放WAV,AIFF,MIDI,AU和RMF格式的声音文件. 要在Java中播放音频文件,应该先为声音文件创建一个音频剪辑对象(audio clip object) ...
- JAVA中哈希表的使用-遍历map集合
java中哈希表的使用第二例-即将罗马数字转换为整数 代码: class Solution { public int romanToInt(String s) { HashMap<Charact ...
- java调用项目中的文件_详解eclipse项目中.classpath文件的使用
1 前言 在使用eclipse或者myeclipse进行java项目开发的时候,每个project(工程)下面都会有一个.classpath文件,那么这个文件究竟有什么作用? 2 作用 .classp ...
- java删除文件中的一行_在Linux中使用java和javac命令编译运行java文件
Linux中java和javac使用及注意事项 注意!!!: 前提配置好java的环境变量. 如下图: 配置文件 java命令正常 javac命令正常 关于如何配置java环境变量,请详见: 第一篇: ...
- java改写weka中的算法_用Eclipse在Weka中嵌入新算法
本文介绍添加一个新算法到Weka集成环境中的过程,并能在GUI中运行并显示其结果.想做到这一点有两种方法,一是用ANT命令生成新的weka.jar(稍后写教程),二是用IDE(Eclipse或NetB ...
- c语言如何删除数组中的某一个元素_数据结构之线性表高效删除重复元素
刚刚学完数据结构之线性表中关于顺序表和单链表的知识,我们知道顺序表中存储数据的结构是一个数组,对于数组来说,在尾部插入.删除元素是比较高效的,但是如果在中间或者开头插入.删除元素,就会涉及数据的搬移, ...
- assembly 输出ab中所有数_罗克韦尔(AB)PLC控制器选型(2)-CompactLogix 5370
前面的文章我们介绍过AB的大型PLC--ControlLogix的选型(参考:罗克韦尔(AB)PLC控制器怎样选型(1)). 今天这篇文章,我们来认识下AB的中型PLC产品--CompactLogix ...
最新文章
- JAVA第二次验证设计性实验报告
- 冲杯咖啡,谈谈计算机cpu
- jpa oracle mysql,oracle+jpa和mysql+mybatis的混合多数据源配置例子
- html链接txt文件,怎么在TXT文件中建立超链接
- c语言生成一个大素数,for语句计算输出10000以内最大素数怎么搞最简单??各位大神们...
- python import MySQLdb 解决报错 Error:Reason: image not found
- C#中的矩阵乘法——对图像应用变换
- pacbio 原始下机数据h5 文件简介
- Android ConstraintLayout 最新使用小结
- 织梦缩略图自动补齐绝对路径_织梦生成文章内容缩略图时自动加上绝对路径教程...
- 物理搬砖问题_人物专访|从“搬砖烧炉工”到MIT物理PhD, 很普通、很坚持、很热爱...
- *第三周*数据结构实践项目一【顺序表的基本运算】
- Python异步高并发批量读取URL链接
- 庆祝:黑客x档案官方二级域名转向
- JN5169 基于 JN-AN-1217 组网点灯
- 自我总结:找工作面试时注意事项
- 使用mac制作linux启动盘与恢复U盘(dd命令制作U盘启动盘后怎么恢复U盘)
- java中的 输入 方法
- 彻底征服 React.js + Flux + Redux【讲师辅导】-曾亮-专题视频课程
- android qq授权申请appkey,如需在APP中使用腾讯QQ登陆,需提前申请获取腾讯QQ的APPKEY和APPSecret。...