1.list可以進行排序(運用Comparator)
對應題:7-33 學生清單2
class studentComparator implements Comparator<Student>{
@Override
public int compare(Student o1, Student o2) {
// TODO Auto-generated method stub
return o1.getNo()-o2.getNo();
}
}
list.sort(new studentComparator());
for (Student s : list) {
System.out.println(s);
}
2.Map的正确周遊方法
對應題:7-32 找到出勤最多的人-hebust
Iterator<Map.Entry<String,Integer>> it=map.entrySet().iterator();
while(it.hasNext()) {
Map.Entry<String,Integer> entry=it.next();
if(entry.getValue()==max) {
System.out.println(entry.getKey());
}
}
3.正确的set插入方式(以某個字元串結束)
while(true)
{
String str=sc.next();
if(str.equals("!!!!!")) {
break;
}else {
set.add(str);
}
}
4.java中大寫轉小寫函數:toLowerCase();
反之,toUpperCase();
5.list.contains()用到equals方法,一般情況下我們沒有重寫equals()方法,這時就會調用繼承自object類的equals()方法,而我們都知道object的equals()方法,實際就是 ==!!還有就是list.indexOf(o),也是調用每個元素的equals方法與o比較,是以一般要重寫。
6.

7.這個題做的不錯奧:
讀入一個字元串,該字元串表示一個整型二維數組d,數組中的元素通過解析字元串參數獲得。例如,字元串參數:“1,2;3,4,5;6,7,8”,對應的數組為: d[0,0] = 1 d[0,1] = 2,d[1,0] = 3 d[1,1] = 4 d[1,2] = 5 d[2,0] = 6 d[2,1] = 7 d[2,2] = 8 列印這個數組各元素的内容
import java.util.*;
import java.util.Scanner;
public class Main{
//1,2;3,4,5;6,7,8
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s=sc.nextLine();
String [] str=s.split(";");
for(int i=0;i<str.length;i++) {
String[] st=str[i].split(",");
for(int j=0;j<st.length;j++) {
if(j==0) {
System.out.print("d["+i+","+j+"] = "+st[j]);
}else {
System.out.print(" d["+i+","+j+"] = "+st[j]);
}
}
System.out.println();
}
}
}
8.矩陣總結:
(1)矩陣加法:兩個行列值相同的矩陣可以相加
public Matrix add(Matrix b) {//矩陣相加
Matrix matrix=new Matrix(this.a.length,this.a[0].length);
for (int i=0;i<this.a.length;i++) {
for (int j=0;j<this.a[0].length;j++) {
matrix.set(i,j,this.a[i][j]+b.a[i][j]);
}
}
return matrix;
}
(2)矩陣相乘:A矩陣的行數必須等于B矩陣的列數,得到的矩陣行數等于A的行數,列數等于B的列數
public Matrix multiply(Matrix b) {//矩陣相乘
if(this.a[0].length != b.a.length)
return null;
Matrix matrix=new Matrix(this.a.length,b.a[0].length);
double sum=0;
for (int i=0;i<this.a.length;i++) {
for (int j=0;j<b.a[0].length;j++) {
sum=0;
for (int k=0;k<b.a.length;k++) {
sum+=this.a[i][k]*b.a[k][j];
}
matrix.set(i,j,sum);
}
}
return matrix;
}
9.Collection c=new Arraylist();
c問什麼定義為collection類型:
(1)面向接口的程式設計
(2)通過c隻能調用屬于Collection接口的方法,如果以後需求變更,ArrayList不能滿足要求,比如換為HashSet,隻需要換new HashSet(),後面的代碼都不用變動,因為下面的代碼都是面向Collection接口的編碼。
10.java的運作環境jre包含jvm,jvm解釋執行.class檔案。
JVM :英文名稱(Java Virtual Machine),就是我們耳熟能詳的 Java 虛拟機。它隻認識 xxx.class 這種類型的檔案,它能夠将 class 檔案中的位元組碼指令進行識别并調用作業系統向上的 API 完成動作。是以說,jvm 是 Java 能夠跨平台的核心,具體的下文會詳細說明。
JRE :英文名稱(Java Runtime Environment),我們叫它:Java 運作時環境。它主要包含兩個部分,jvm 的标準實作和 Java 的一些基本類庫。它相對于 jvm 來說,多出來的是一部分的 Java 類庫。
JDK :英文名稱(Java Development Kit),Java 開發工具包。jdk 是整個 Java 開發的核心,它內建了 jre 和一些好用的小工具。例如:javac.exe,java.exe,jar.exe 等。
path變量用于計算機查找java和javac這兩個指令
classpath變量用于查找.class檔案
11.判斷字元串是否相等就要用equals,而不是“==”!!!!!記住nmd
str.equalsIgnoreCase(“student”):
這就是不考慮大小寫的情況下與student相等的字元串的表達方式。
12.Person person=new Student();
person的編譯類型就是Person,而實際類型是Student
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Person person=new Student();
if(person instanceof Student) {
System.out.println("ok");
}
}
}
class Person{
private String name;
}
class Student extends Person{
private int num;
}
這裡也說明了person的類型是Student
12.str=str.substring(0,str.length()-1);這裡可以将str的最後一個字元除去。
13. jmu-Java&Python-統計文字中的單詞數量并按出現次數排序
現在需要統計若幹段文字(英文)中的單詞數量,并且還需統計每個單詞出現的次數。
注1:單詞之間以空格(1個或多個空格)為間隔。
注2:忽略空行或者空格行。
import java.util.*;
import java.util.Scanner;
public class Main {
// 1,2;3,4,5;6,7,8
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Map map = new HashMap();
while (true) {
// !.,:*?
String str = sc.next();
if (str.equals("!!!!!")) {
break;
} else {
Set set = map.keySet();
if (str.contains("!") || str.contains(".") || str.contains(",") || str.contains(":")
|| str.contains("*") || str.contains("?")) {
str = str.toLowerCase();
str = str.substring(0, str.length() - 1);
char c = str.charAt(str.length() - 1);
if (c > 'z' || c < 'a') {
str = str.substring(0, str.length() - 1);
}
}
String str1 = str.toLowerCase();
if (set.contains(str1)) {
int value1 = (int) map.get(str1);
int value = value1 + 1;
map.put(str1, value);
} else {
map.put(str1, 1);
}
}
}
System.out.println(map.size());
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>();
list.addAll(map.entrySet());
class mapcomparator implements Comparator<Map.Entry<String, Integer>> {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
if (o1.getValue() != o2.getValue()) {
return o2.getValue() - o1.getValue();
} else {
return o1.getKey().compareTo(o2.getKey());
}
}
}
list.sort(new mapcomparator());
Iterator iter = list.iterator();
int num = 0;
for (Map.Entry s : list) {
if (num == 10) {
break;
} else {
System.out.println(s.getKey() + "=" + s.getValue());
num++;
}
}
}
}
14.一些可能會經常用到的東西
(1)Arrays類:
Arrays.toString(a),将數組a轉換為一個字元串。
Arrays.fill(a,val),将數組a的所有的值都指派為val
Arrays.fill(a,x,y,val),将數組a的x到y的值都指派為val
Arrays.asList(Array):數組轉換為list
*set與list互相轉換:
Set set=new HashSet();
List list=new ArrayList(set);
Set setk=new HashSet(list);
所有的容器都可以轉換為數組 運用toArray()
(2)Collection c接口:
c.clear():清除集合中的所有元素。
c.contains(o):傳回集合中是否包含指定元素
c.contains(Collection d):傳回集合中是否包含集合c
c.retainAll(Collection d):求集合c與d的交集
Collection c=new ArrayList();
Collection d=new ArrayList();
c.add(1);
c.add(2);
c.add(3);
d.add(2);
d.add(3);
d.add(4);
c.retainAll(d);
System.out.println(c);
(3)TreeSet隻接受實作了Comparable的類的對象,而且有定制排序
static class Studentcomparator implements Comparator<Student> {
/*
* Java出現No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing
* 即“沒有可通路的内部類E的執行個體,必須配置設定一個合适的内部類E的執行個體(如x.new A(),x必須是E的執行個體。)”
* 看看是不是主類調用了非靜态類
*/
@Override
public int compare(Student o1, Student o2) {
// TODO Auto-generated method stub
return o1.getAge()-o2.getAge();
}
}
TreeSet<Student> tree=new TreeSet<Student>(new Studentcomparator());
(4)list l:
l.get(index),傳回index處的值
l.insexOf(Object o):傳回list中o第一次出現的位置
(5)queue的主要方法:
15.
Java辨別符命名規則:
① 隻能由字母、數字、_或美元符号組成 字母:不局限于
② 必須以字母、_或$開頭 英文字母,可以
③ 大小寫敏感的,無長度限制 包含Unicode字
符集支援的字元
④ 不能是Java的關鍵字和保留字
16.
float比long的表數範圍大
多種類型混合運算:1)系統自動将所有類型轉換成表數範圍最
大的類型,再進行計算;2)byte、short、char互相之間不轉換,
用時全部自動轉換成int
例1:int i1 = 123; int i2 = 456;double d1 = (i1+i2)*1.2; 系統将轉換為double型運算
例2:byte b1 = 1;
byte b2 = 2;
byte b3 = b1+b2;
系統将轉換為int型運算,需要強制轉換符, 改為(byte) (b1+b2);
17.
//建立一個日期對象
Date d=new Date();
System.out.println(d);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//格式化為日期/時間字元串
String cc=sdf.format(d);
System.out.println(cc);
18.①隻要一個類的構造方法設定為private,就表明它不想被繼承,因為要被繼承子類就要實作父類的構造方法
②final類:阻止類(final類)被繼承
final方法:阻止方法(final方法)被重寫(override)
19.格式為“引用 instanceof 類名”:判斷該引用所指向的對象是否屬于該類或該類子類的對象。
20.數組複制
int[ ] arrayA = {2,3,5,7,11,13};
int[ ] arrayB = new int[10];
System.arraycopy(arrayA,0,arrayB,0,arrayA.length);
21.toUpperCase()和toLowerCase()方法會傳回一個新的String對象,但是如果字元串原本就是大寫或小寫形式則傳回原對象。
String s = "Welcome to Java World!";
String s1 = " sun java ";
//substring()傳回一個新字元串,它是此字元串的一個子字元串。
//該子字元串始于指定索引處的字元,一直到此字元串末尾。
System.out.println(s.substring(11));
//trim()的作用是去掉字元串兩端的多餘的空格
System.out.println(s1.trim());
//indexOf()
System.out.println(s.indexOf("Java"));
//replace()替換
System.out.println(s.replace("Java","java"));
//String.valueOf()将指定的資料類型轉換成String
//String.valueOf(Object obj):将 obj對象轉換成 字元串,等于 obj.toString()
int i=123;
String stringi=String.valueOf(i);
System.out.println(stringi.length());//3
Student stu=new Student();
String stringstu=String.valueOf(stu);//調用toString()
System.out.println(stringstu);
22.StringBuffer 線程安全的可變字元序列
傳回值:對原來StringBuffer對象的引用。
public StringBuffer append(…)
public StringBuffer insert(…)
public StringBuffer delete(…)
23.Math
abs:求絕對值
pow(x,y):求x的y次幂
Math.random()是令系統随機選取大于等于 0.0 且小于 1.0 的僞随機 double 值
更新:Math.random()*(n-m)+m,生成大于等于m小于n的随機數;
24.Collections類的常用方法:
sort(list,new Compatator());
replaceAll(list,a,b);替換
swap(list,a,b);
binarySearch(list,key);
shuffle(list);随機排序
reverse();翻轉
rotate(list,a);後移a個機關,後面被覆寫的數移到前面去
25.周遊的三種方式:注意“增強for循環方式”
public static void test3(){
ArrayList list = new ArrayList();
list.add(123);
list.add("AAAA");
list.add("bb");
list.add(new String("JavaEE"));
list.add(new Date());
list.add(false);
// 周遊
//1.Iterator疊代器方式
Iterator iterator = list.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
//2.增強for循環
for(Object obj:list){
System.out.println(obj);
}
//3.普通for循環
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}