JAVA集合框架及其常用方法
生活随笔
收集整理的這篇文章主要介紹了
JAVA集合框架及其常用方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
List接口和ArrayList類
/*** @author Administrator*學生類*/ public class Student {public String id;public String name;public Set courses;public Student(String id,String name){this.id=id;this.name=name;this.courses=new HashSet();}-對象存入集合都變成Object類型,取出時需要進行類型轉換。
/*** @author Administrator*備選課程類*/ public class ListTest {public List coursesToSelect;public ListTest(){this.coursesToSelect=new ArrayList();}public void testAdd(){//創建一個課程對象,并通過調用add方法,添加到List中Course cr1=new Course("1","數據結構");coursesToSelect.add(cr1);Course temp=(Course)coursesToSelect.get(0);System.out.println("添加了課程:"+temp.id+":"+temp.name);Course cr2=new Course("2","C語言");coursesToSelect.add(0, cr2);Course temp2=(Course)coursesToSelect.get(0);System.out.println("添加了課程:"+temp2.id+":"+temp2.name);//以下方法會拋出異常/* Course cr3=new Course("3","123");coursesToSelect.add(cr3);*/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);//也可以設置插入位置如cr2,所以懶不寫了System.out.println(temp2.id+temp2.name+temp3.id+temp3.name);Course []course2={new Course("5","高等數學"),new Course("6","大學英語")};}/*** 迭代器遍歷,迭代器Iterator是用來遍歷集合中元素的,不具備存儲功能*/public void testIterator(){Iterator it=coursesToSelect.iterator();while(it.hasNext()){Course cr=(Course)it.next();System.out.println("課程(迭代):"+cr.id+":"+cr.name);}}/*** foreach遍歷*/public void testForeach(){for(Object obj:coursesToSelect){Course cr=(Course)obj;}} }//當使用泛型時,foreach如下 for(Course cour:list){}Arrays.asList(T a);//將某類型轉化為List列表
set();//修改List中元素
remove()//刪除List中元素
Set接口和Hashset類
Set是無序且不可重復的,當遍歷時,只能選擇使用foreach和地帶器Iterator遍歷
HashMap類
//修改映射public void testModify(){System.out.println("請輸入要修改的學生id");Scanner console=new Scanner(System.in);while(true){String stuid=console.next();//從strudents中查找該學生id對應的學生對象Student st=students.get(stuid);if(st==null){System.out.println("該id不存在,請重新輸入");continue;}System.out.println("當前該學生id,對應的學生為"+st.name);System.out.println("請輸入學生的姓名");String name=console.next();Student newStudent=new Student(stuid,name);students.put(stuid, newStudent);System.out.println("修改成功");break;}} //測試Map的keySet方法public void testKeySet(){ //通過keyset方法,返回map中的所有鍵的set集合 Set<String>keySet=students.keySet(); //取得students容量System.out.println("有"+students.size()+"個" ); //遍歷keyset,取得每一個鍵,再調用get方法取得每個鍵的valuefor(String stuID:keySet){Student st=students.get(stuID);if(st!=null){System.out.println("學生:"+st.name );}}} //刪除學生 public void testRemove(){//獲取從鍵盤輸入的學生id Scanner console=new Scanner(System.in); while(true){//提示輸入待刪除學生的IDSystem.out.println("請輸入要刪除的學生ID");String id=console.next();//判斷該id是否有對于的學生對象Student st=students.get(id);if(st==null){System.out.println("輸入的id不存在");continue;}students.remove(id);System.out.println("成功刪除學生"+st.name);break;} }//檢測序列是否包含某個對象用contains()方法,包含返回true,否則返回false
Course c=new Course();
boolean b=序列的引用.contains(c);
重寫equals()方法
為什么要重寫equals()方法?
因為有的時候我們判斷兩個對象是否相等,希望根據類的成員變量是否相等來判斷,而不是兩個引用對象是否指向同一個對象,因此這時候我們需要重寫equals()方法。
如上述的contains()方法,當我們要判斷一個對象是否存在集合中時,我們需要先判斷集合中是否存在已知對象,其實是對集合進行遍歷,然后每一個元素都調用equals()方法進行比較,這樣就必須重寫equals()。
@Override public boolean equal(obj){ if(this==obj)return true; if(obj==null)return false; if(!(obj instanceof Course))return false;//if(getClass!=obj.getClass())return false; Course course=(Course)obj; return this.name.equals(course.name);快速重寫hashCode()和
右鍵→source→generate hashCode()和equals()
轉載于:https://www.cnblogs.com/leungjj/p/6428495.html
總結
以上是生活随笔為你收集整理的JAVA集合框架及其常用方法的全部內容,希望文章能夠幫你解決所遇到的問題。