java筆記目錄
List 中元素是否存在實例
/*
* 測試List的contains方法
*/
public void testListContains(){
Course course=coursesToSelect.get(0);
System.out.println("取得課程"+course.name);
System.out.println("備選課程中是否包含課程"+course.name+","+coursesToSelect.contains(course));
//創建一個新的課程,與course對象一致 要重寫Course equals方法。
Course course2=new Course(course.id,course.name);
System.out.println("取得課程"+course2.name);
System.out.println("備選課程中是否包含課程"+course2.name+","+coursesToSelect.contains(course2));
//
System.out.println("請輸入課程名稱:");
String name=console.next();
Course course3 = new Course();
course3.name=name;
System.out.println("取得課程"+course3.name);
System.out.println("備選課程中是否包含課程"+course3.name+","+coursesToSelect.contains(course3));
}
/*
* 測試List的contains方法 SetList.java
*/
public void testListContains(){
Course course=coursesToSelect.get(0);
System.out.println("取得課程"+course.name);
System.out.println("備選課程中是否包含課程"+course.name+","+coursesToSelect.contains(course));
//創建一個新的課程,與course對象一致 要重寫Course equals方法。
Course course2=new Course(course.id,course.name);
System.out.println("取得課程"+course2.name);
System.out.println("備選課程中是否包含課程"+course2.name+","+coursesToSelect.contains(course2));
//
System.out.println("請輸入課程名稱:");
String name=console.next();
Course course3 = new Course();
course3.name=name;
System.out.println("取得課程"+course3.name);
System.out.println("備選課程中是否包含課程"+course3.name+","+coursesToSelect.contains(course3));
}
取得課程C語言
備選課程中是否包含課程C語言,true
取得課程C語言
備選課程中是否包含課程C語言,true
請輸入課程名稱:
數據結構
取得課程數據結構
備選課程中是否包含課程數據結構,true
Set 元素是否存在實例
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (!(obj instanceof Course))
return false;
Course other = (Course) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
/*
* 測試Set的contains 方法
*/
public void testSetContains(){
System.out.println("請輸入學生已選的課程名稱:");
String name = console.next();
Course course3 = new Course();
course3.name = name;
System.out.println("取得課程" + course3.name);
System.out.println("備選課程中是否包含課程" + course3.name + "," + student.courses.contains(course3));
}
有如下課程待選(通過ForEach訪問):
添加了課程2:C語言
添加了課程1:數據結構
添加了課程5:高等數學
添加了課程6:大學英語
添加了課程3:離散數學
添加了課程4:彙編語言
歡迎學生:小明選課!
請輸入課程ID
2
請輸入課程ID
1
請輸入課程ID
5
請輸入學生已選的課程名稱:
數據結構
取得課程數據結構
備選課程中是否包含課程數據結構,true
獲取索引位置
//通過indexOf 獲取索引位置
if (coursesToSelect.contains(course3)) {
System.out.println("課程"+course3.name+"的索引位置爲:"+coursesToSelect.indexOf(course3) );
}
Map 中是否包含指定的 key 和 value 實例
Student.java
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (!(obj instanceof Student))
return false;
Student other = (Student) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
/*
* 測試Map中,是否包含Key值或者某個Value值
*/
public void testContainsKeyOrValue() {
System.out.println("請輸入要查詢的學生ID:");
Scanner console = new Scanner(System.in);
String id = console.next();
System.out.println("你輸入的學生id爲:" + id + "在學生映射表中是否存在: " + students.containsKey(id));
if (students.containsKey(id)) {
System.out.println("對應的學生爲:" + students.get(id).name);
}
System.out.println("請輸入要查詢的學生姓名:");
String name = console.next();
if (students.containsValue(new Student(null, name))) {
System.out.println("在學生映射表中,確實存在學生:" + name);
} else {
System.out.println("在學生映射表中不存在該學生!");
}
}
請輸入學生ID
1
請輸入學生姓名:
中
成功添加學生:中
請輸入學生ID
2
請輸入學生姓名:
國
成功添加學生:國
請輸入學生ID
3
請輸入學生姓名:
強
成功添加學生:強
總共有:3個學生!
學生:中
學生:國
學生:強
請輸入要查詢的學生ID:
2
你輸入的學生id爲:2在學生映射表中是否存在: true
對應的學生爲:國
請輸入要查詢的學生姓名:
強
在學生映射表中,確實存在學生:強
Collections.sort() 實現 List 排序
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
/*
* 1.對Integer泛型打的List進行排序
* 2.String泛型的List進行排序
* 3.其他泛型的List進行排序,以Student爲例
*/
public class CollecctionsTest {
/*
* Integer泛型的List進行排序 插入十個100以內的不重複的隨機整數,並進行排序
*/
public void testIntegerSort() {
List<Integer> integerList = new ArrayList<Integer>();
Random random = new Random();
Integer k;
for (int i = 0; i < 10; i++) {
do {
k = random.nextInt(100);
} while (integerList.contains(k));
integerList.add(k);
System.out.println("成功添加整數:" + k);
}
System.out.println("~~~~~~~~排序前~~~~~~~~~");
for (Integer integer : integerList) {
System.out.println("元素" + integer);
}
Collections.sort(integerList);
System.out.println("~~~~~~~~排序後~~~~~~~~~");
for (Integer integer : integerList) {
System.out.println("元素" + integer);
}
}
/*
* String泛型的List進行排序 添加三個亂序字符串,進行排序
*/
public void testStringSort() {
List<String> stringList = new ArrayList<>();
stringList.add("microsoft");
stringList.add("google");
stringList.add("lenovo");
System.out.println("~~~~~~~排序前~~~~~~");
for (String string : stringList) {
System.out.println("元素:" + string);
}
Collections.sort(stringList);
System.out.println("~~~~~~~排序後~~~~~~");
for (String string : stringList) {
System.out.println("元素:" + string);
}
}
public static void main(String[] args) {
CollecctionsTest ct = new CollecctionsTest();
// ct.testIntegerSort();
ct.testStringSort();
}
}
~~~~~~~排序前~~~~~~
元素:microsoft
元素:google
元素:lenovo
~~~~~~~排序後~~~~~~
元素:google
元素:lenovo
元素:microsoft
Comparable --默認比較規則
Comparator --臨時比較規則
import java.util.HashSet;
import java.util.Set;
public class Student implements Comparable<Student> {
public String id;
public String name;
public Set<Course> courses;
public Student(String id, String name) {
this.id = id;
this.name = name;
this.courses = new HashSet<Course>();
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (!(obj instanceof Student))
return false;
Student other = (Student) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
@Override
public int compareTo(Student o) {
// TODO Auto-generated method stub
return this.id.compareTo(o.id);
}
}
import java.util.Comparator;
public class StudentComparator implements Comparator<Student> {
@Override
public int compare(Student arg0, Student arg1) {
// TODO Auto-generated method stub
return arg0.name.compareTo(arg1.name);
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
/*
* 1.對Integer泛型打的List進行排序
* 2.String泛型的List進行排序
* 3.其他泛型的List進行排序,以Student爲例
*/
public class CollecctionsTest {
/*
* String泛型的List進行排序 添加三個亂序字符串,進行排序
*/
public void testStudentSort() {
List<Student> stList = new ArrayList<Student>();
Random random = new Random();
stList.add(new Student(random.nextInt(1000) + "", "Mike"));
stList.add(new Student(random.nextInt(1000) + "", "Angela"));
stList.add(new Student(random.nextInt(1000) + "", "Lucy"));
stList.add(new Student(10000 + "", "Beyonce"));
System.out.println("~~~~~~~排序前~~~~~~");
for (Student student : stList) {
System.out.println("學生:" + student.id + "," + student.name);
}
Collections.sort(stList);
System.out.println("~~~~~~~排序後~~~~~~");
for (Student student : stList) {
System.out.println("學生:" + student.id + "," + student.name);
}
Collections.sort(stList, new StudentComparator());
System.out.println("~~~~~~~按照命名排序後排序後~~~~~~");
for (Student student : stList) {
System.out.println("學生:" + student.id + "," + student.name);
}
}
public static void main(String[] args) {
CollecctionsTest ct = new CollecctionsTest();
// ct.testIntegerSort();
// ct.testStringSort();
ct.testStudentSort();
}
}
~~~~~~~排序前~~~~~~
學生:670,Mike
學生:153,Angela
學生:674,Lucy
學生:10000,Beyonce
~~~~~~~排序後~~~~~~
學生:10000,Beyonce
學生:153,Angela
學生:670,Mike
學生:674,Lucy
~~~~~~~按照命名排序後排序後~~~~~~
學生:153,Angela
學生:10000,Beyonce
學生:674,Lucy
學生:670,Mike