java mooc_mooc_java 集合框架下

1.判断List中课程是否存在

/**

* 测试List的contains方法

* @param args*/

public voidtestListContains(){

Course course=(Course)coursesToSelect.get(0);

System.out.println("取得课程"+course.name);

System.out.println("备选课程中是否包含课程:"+course.name+","+coursesToSelect.contains(course));

System.out.println("请输入课程名称:");

String name=console.next();

Course course2=newCourse();

course2.name=name;

System.out.println("新加入:"+course2.name);

System.out.println("备选课程中是否包含课程:"+course2.name+","+coursesToSelect.contains(course2));

}

c2f7416a148f644e18e79cfb1824ffc6.png

Course.java中重写equals

1 public booleanequals(Object obj){2 if(this==obj)3 return true;4 if(obj==null)5 return false;6 if(!(obj instanceof Course))//判断是否为Course类型的对象

7 return false;8 Course course=(Course) obj;9 if(this.name==null){10 if(course.name==null)11 return true;12 else

13 return false;14 }else{15 if(this.name.equals(course.name))16 return true;17 else{18 return false;19 }20

21 }22 }

2.判断Set中课程是否存在

Set继承自Collection接口,所以也包含contains和containsAll方法

注意了这里关于使用 Set 集的 hashCode的方法,hashCode方法的工作原理是

Set.contains(E e)的时候,先调用从Object继承而来的hashCode方法,然后在调用equals()方法,连个方法都返回真的时候,才认定Set包含某个元素。jvm运行时,给每个对象分配唯一一个标志身份的标志hanshcode。众类鼻祖Object的hashCode()方法在默认情况下,判断哈希码是不是相同.即如同equals默认情况下比较的是二者是不是同一个内存快。Set集的contains方法,内部就是先调用hashCode再调用equals()方法。很多情况要结合实际对hashCode进行改写

8411a5cc1990207c55181be7f5a1fc82.png

3.获取List中课程的位置

indexOf()方法与lastIndexOf()方法实现原理:

1、遍历调用每个元素的equals()方法,如果返回true则将次元素的索引返回;

2、如果有多个相同元素,则只返回第一个元素的索引;

3、lastIndexOf()方法则从最后一个元素开始遍历;

1 if(coursesToSelect.contains(course2))2 System.out.println("课程"+course2.name+"的索引位置为"+coursesToSelect.indexOf(course2));

4.判断Map中是否包含指定的key和value

Map映射表

一、判断是否包含某个Key值:containsKey()

二、判断是否包含某个Value值:containsValue()

1、同样是以每一个元素的value值的equals方法进行比较,所以需要重写value类的equals()方法来进行属性(某个)比较

1 /**

2 * 测试Map中是否包含某个Key值或某个Value值3 *@paramargs4 */

5 public voidtestContainsKeyOrValue(){6 System.out.println("输入学生ID");7 Scanner console=newScanner(System.in);8 String id=console.next();9 //在Map中,用containsKey方法判断是否包含某个Key值

10 System.out.println("您输入的学生ID"+id+",在映射表中是否存在"+students.containsKey(id));11 if(students.containsKey(id))12 System.out.println("对应的学生为 "+students.get(id).name);13 System.out.println("请输入要查询的学生姓名");14 String name=console.next();15 //用containsValue方法,来判断是否包含某个Value值

16 if(students.containsValue(new Student(null, name)))17 System.out.println("在学生映射表中确实存在"+name);18 else

19 System.out.println("不存在此学生");20 }

因为Map的键值对应的值是唯一的,而值所映射的键值却有可能是多个的,而Contains方法自带的比较机制是比较索引,也就是地址,所以ContainsValue方法需要改写

在Student类中重写hashCode和equals方法

5.应用Collection.Sort()对List排序

字符串的排列顺序  数字:0-9大写字母:A-Z 小写字母:a-z

1 /**

2 * 通过Collection.sort()方法,对Integer泛型的List进行排序3 * 对String泛型的List进行排序4 * 对其他类型的List进行排序,例如Student5 */

6 public classCollectionTest {7 public voidtestSort1(){8 List integerList=new ArrayList();9 //插入10个100以内的不重复随机数

10 Random r=newRandom();11 Integer k;12 for(int i=0;i<10;i++){13 do{14 k=r.nextInt(100);15 }while(integerList.contains(k));16 integerList.add(k);17 System.out.println("添加数"+k);18 }19 System.out.println("--------------排序前-----------------");20 for(Integer i:integerList){21 System.out.println("元素"+i);22 }23 Collections.sort(integerList);24 System.out.println("--------------排序后-----------------");25 for(Integer i:integerList){26 System.out.println("元素"+i);27 }28 }29 /*

30 * 对S提让您更泛型的List排序31 */

32 public voidtestSort2(){33 List stringList=new ArrayList();34 stringList.add("microsoft");35 stringList.add("google");36 stringList.add("Lenovo");37 System.out.println("--------------排序前-----------------");38 for(String s:stringList){39 System.out.println("元素"+s);40 }41 Collections.sort(stringList);42 System.out.println("--------------排序后-----------------");43 for(String s:stringList){44 System.out.println("元素"+s);45 }46 }47 public static voidmain(String[] args) {48 CollectionTest ct=newCollectionTest();49 ct.testSort1();50 ct.testSort2();51 }52 }

1 //作业

2 public voidshowStringSort(){3   //1.创建完List之后,往其中添加十几条随机字符串

4   List strings = new ArrayList();5   for(int i = 0;i<10;i++){6   String str = "abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";7   Random random = newRandom();8   StringBuffer sb = newStringBuffer();9   //长度10以内的随机数

10   int numLength = random.nextInt(9)+1;11   for(int k = 0;k

13 int numIndex = random.nextInt(61);14     sb.append(str.charAt(numIndex));15   }16   //判断生成的字符串是否已经被包含

17   if(!strings.contains(sb.toString())){18     strings.add(sb.toString());19 }else{20 i--;21 }22 }23 System.out.println("------排序前-------");24 for(String str:strings){25   System.out.println(str);26 }27 Collections.sort(strings);28 System.out.println("------排序后-------");29 for(String str:strings){30   System.out.println(str);31 }32 }

6.对学生序列排序

1 /*

2 * 对其他类型泛型的List排序3 */

4 public voidtestSort3(){5 List studentList=new ArrayList();6 studentList.add(new Student(1+"","小明"));7 studentList.add(new Student(2+"","小红"));8 studentList.add(new Student(3+"","小兰"));9 System.out.println("--------------排序前-----------------");10 for(Student s:studentList){11 System.out.println("元素"+s);12 }13 Collections.sort(studentList);//由于Student并不是Comparable接口的实现类,所以报错14 System.out.println("--------------排序后-----------------");15 for(Student s:studentList){16 System.out.println("元素"+s);17 }18 }

7.Comparable & Comparator

Comparable接口是可比较的,可进行自然排序,其实现类需实现compareTo()方法,该方法返回值为正数时表示大于,负数表示小于,0表示等于。

Comparator接口是比较工具接口,用于定义临时比较规则,而不是默认比较规则,其实现需实现compare()方法。

java接口框架:Collection接口、Map接口、Collections工具类、Comparable接口、Comparator接口

8.实现学生序列排序

1 public class Student implements Comparable{2

3 @Override4 public intcompareTo(Student o) {5 return this.id.compareTo(o.id);6 }

1 public voidtestSort3(){2 List studentList=new ArrayList();3 Random r=newRandom();4 studentList.add(new Student(r.nextInt(1000)+"","mike"));5 studentList.add(new Student(r.nextInt(1000)+"","angela"));6 studentList.add(new Student(r.nextInt(1000)+"","lucy"));7 System.out.println("--------------排序前-----------------");8 for(Student s:studentList){9 System.out.println("元素"+s.id+":"+s.name);10 }11 Collections.sort(studentList);12 System.out.println("--------------排序后-----------------");13 for(Student s:studentList){14 System.out.println("元素"+s.id+":"+s.name);15 }16 }

1 System.out.println("--------------按照姓名排序后-----------------");2 Collections.sort(studentList,newStudentComparator());3 for(Student s:studentList){4 System.out.println("元素"+s.id+":"+s.name);5 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值