DAY 28
day28
泛型
在集合中使用泛型:
1.集合接口或集合類在jdk5.0時都修改為帶泛型的結構
2.在實例化集合類時,可以指明具體的泛型類型
3.指明完以后,在集合類或接口中凡是定義類或接口時,內部結構(例如:方法、構造器/屬性等)使用到類的泛型的位置,都指定為實例化的泛型類型。例如:add(E e)—>實例化后:add(Integer e)
4.注意點:泛型的類型必須是類,不能是基本數據結構,需要用到基本數據類型的位置,拿包
5.若實例化時,沒有指明泛型的類型,默認類型為java.lang.Object類型
package shangGuiGu.day28;import org.junit.Test;import java.time.Instant; import java.util.*;public class demo01 {@Testpublic void test(){ArrayList<Integer> ints = new ArrayList<Integer>();//編譯時,就會進行類型檢查,保證數據的安全ints.add(47);ints.add(45);ints.add(25);ints.add(90);for (Integer score:ints){int stuscore=score;System.out.print(stuscore);}System.out.println();Iterator<Integer> iterator=ints.iterator();while(iterator.hasNext()){int stuscore=iterator.next();System.out.print(stuscore);}}@Testpublic void test1(){Map<String,Integer> map=new HashMap<String, Integer>();map.put("dd",24);map.put("fd",3);Set<Map.Entry<String,Integer>> entry= map.entrySet();Iterator<Map.Entry<String, Integer>> iterator = entry.iterator();while(iterator.hasNext()){Map.Entry<String, Integer> next = iterator.next();String key=next.getKey();Integer value = next.getValue();System.out.println(key+"--->"+value);}} }自定義泛型結構:泛型類、泛型接口、泛型方法
package shangGuiGu.day28; //自定義泛型類 public class demo02<T> {String ordername;int orderid;//類的內部結構可以使用類的泛型T orderT;public demo02(){}public demo02(String ordername,int orderid,T orderT){this.ordername=ordername;this.orderid=orderid;this.orderT=orderT;}public T getOrderT(){return orderT;}public void setOrderT(T orderT){this.orderT=orderT;}@Overridepublic String toString() {return "demo02{" +"ordername='" + ordername + '\'' +", orderid=" + orderid +", orderT=" + orderT +'}';} } package shangGuiGu.day28;import org.junit.Test;public class demo03 {@Testpublic void test(){//若定義了泛型類,實例化沒有指明類的泛型,則認為此泛型類型為Object類型//要求:若定義了類是帶泛型的,建議在實例化時要指明類的泛型demo02 demo02 = new demo02();demo02.setOrderT(123);demo02.setOrderT("abc");//建議:實例化時指明類的泛型shangGuiGu.day28.demo02<String> stringdemo02 = new demo02<String>("orderaa",1991,"dd");stringdemo02.setOrderT("aa:hello");}@Testpublic void test2(){demo04 sub1=new demo04();//由于子類在繼承帶泛型的父類時指明了泛型類型。則實例化子類對象時,不再需要指明泛型類sub1.setOrderT(1122);} } package shangGuiGu.day28;public class demo04 extends demo02<Integer> {} package shangGuiGu.day28;import org.junit.Test;import java.util.ArrayList; import java.util.Iterator; import java.util.List;public class demo06 {//泛型在繼承方面的體現//類A是類B的父類,G<A>和G<B>不具有子父類關系,二者是并列關系//類A是類B的父類,A<G>是B<G>的父類@Testpublic void test1(){Object obj=null;String str=null;obj=str;Object[] arr1=null;String[] arr2=null;arr1=arr2;List<Object> list1=null;List<String> list2=null;//此時的list1和list2不具有子父類關系 list1=list2;}public void show(List<Object> list){}@Testpublic void test3(){List<String> list1=null;ArrayList<String> list2=null;list1=list2;}//通配符?的使用//類A是類B的父類,G<A>和G<B>不具有子父類關系,二者共同的父類是G<?>@Testpublic void test4(){List<Object> list1=null;List<String> list2=null;List<?> list=null;list=list1;list=list2;}public void print(List<?> list){Iterator<?> iterator=list.iterator();while(iterator.hasNext()){Object obj=iterator.next();System.out.println(obj);}} //有限制條件的通配符使用} package shangGuiGu.day28;import java.util.*;public class demo07<T> {private Map<String,T> map=new HashMap<String, T>();//保存T類型的對象到Map成員變量中public void save(String id,T entity){map.put(id,entity);}//從map中獲取id對應的對象public T get(String id){return map.get(id);}//替換map中key為id的內容,改為entity對象public void update(String id,T entity){if(map.containsKey(id)){map.put(id,entity);}}//返回map中存放的所有T 對象public List<T> list(){List<T> list=new ArrayList<>();Collection<T> values=map.values();for(T t:values){list.add(t);}return list;}//刪除指定id對象public void delete(String id){map.remove(id);} } package shangGuiGu.day28;import java.util.Objects;public class demo08 {private int id;private int age;private String name;public demo08() {}public demo08(int id, int age, String name) {this.id = id;this.age = age;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "demo08{" +"id=" + id +", age=" + age +", name='" + name + '\'' +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;demo08 demo08 = (demo08) o;return id == demo08.id &&age == demo08.age &&Objects.equals(name, demo08.name);}@Overridepublic int hashCode() {return Objects.hash(id, age, name);} } package shangGuiGu.day28;import shangGuiGu.day9.demo01;import java.util.List;public class demo09 {public static void main(String[] args) {demo07<demo08> dao=new demo07<demo08>();dao.save("1001",new demo08(1001,34,"zhou"));dao.save("1002",new demo08(1002,20,"zho"));dao.save("1003",new demo08(1003,24,"zh"));dao.update("1002",new demo08(1002,20,"zoo"));dao.delete("1003");List<demo08> list=dao.list();list.forEach(System.out::println);} }IO流
創建File類的實例
File(String filePath)
File(String parentPath,String ChildPath)
File(File parentPath,String ChildPath)
package shangGuiGu.day28;import org.junit.Test;import java.io.File;public class demo10 {@Testpublic void test1(){//構造器1//相對路徑:相較于某個路徑下,指明的路徑File file1=new File("hello.txt");//相對于當前module//絕對路徑:包含盤符在內的文件或文件目錄的路徑File file2=new File("C:\\Users\\王譽潼\\Desktop");System.out.println(file1);System.out.println(file2);//構造器2File file3=new File("C:\\Users\\王譽潼","Desktop");//構造器3File file4=new File(file3,"hi.txt");System.out.println(file4);}@Testpublic void test2(){File file1=new File("hello.txt");File file2=new File("C:\\Users\\王譽潼\\Desktop\\hi.txt");System.out.println(file1.getAbsoluteFile());System.out.println(file1.getPath());System.out.println(file1.getName());System.out.println(file1.getParent());System.out.println(file1.length());System.out.println(file1.lastModified());System.out.println();System.out.println(file2.getAbsoluteFile());System.out.println(file2.getPath());System.out.println(file2.getName());System.out.println(file2.getParent());System.out.println(file2.length());System.out.println(file2.lastModified());}@Testpublic void test3(){File file=new File("C:\\Users\\王譽潼\\Desktop\\hi.txt");String[] list=file.list();for(String s:list){System.out.println(s);}System.out.println();File[] files=file.listFiles();for(File f:files){System.out.println(f);}}@Test//要想保證返回TRUE,需要file1在硬盤中是存在的,file2在硬盤中不存在public void test5(){File file1=new File("dhi.txt");File file2=new File("C:\\Users\\王譽潼\\Desktop\\hi.txt");boolean renameto=file1.renameTo(file2);System.out.println(renameto);} } package shangGuiGu.day28;import org.junit.Test;import java.io.File; import java.io.IOException;public class demo11 {@Testpublic void test(){File file1=new File("dhi.txt");System.out.println(file1.isDirectory());System.out.println(file1.isFile());System.out.println(file1.exists());System.out.println(file1.canRead());System.out.println(file1.canWrite());System.out.println(file1.isHidden());File file2=new File("C:\\Users\\王譽潼\\Desktop\\hi.txt");System.out.println(file2.isDirectory());System.out.println(file2.isFile());System.out.println(file2.exists());System.out.println(file2.canRead());System.out.println(file2.canWrite());System.out.println(file2.isHidden());}@Testpublic void test1() throws IOException {File file1=new File("dhi.txt");if(!file1.exists()){file1.createNewFile();System.out.println("創建成功");}else{file1.delete();System.out.println("刪除成功");}}@Testpublic void test3(){File file1=new File("d:\\io\\io1");boolean mkdir=file1.mkdir();if(mkdir){System.out.println("chenggong1 ");}File file2=new File("d:\\io\\io2");boolean mkdir1=file2.mkdirs();if(mkdir1){System.out.println("chenggong2 ");}} }總結
- 上一篇: testtesttesttesttest
- 下一篇: 仓库流程续