1. 程式人生 > 遊戲 >《賽博朋克2077》打上50多個Mod 3090光追演示

《賽博朋克2077》打上50多個Mod 3090光追演示

集合

  1. 是物件的容器,實現了對物件的常用操作,實現陣列的功能

  2. 和陣列的區別

    • 陣列長度固定,集合長度不固定

    • 陣列可以儲存基本型別和引用型別,集合只能儲存引用型別

Collection體系集合

  1. Collection集合的使用

    package cn.ljy.Collection;

    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;

    public class Demo01 {
    public static void main(String[] args) {
    Collection collection=new ArrayList();//因為介面不能例項化,所以選著了list下的ArrayList()類
    collection.add("桃子");//collection新增一個桃子
    collection.add("蘋果");
    collection.add("香蕉");
    collection.add("西瓜");
    System.out.println("元素個數"+collection.size());//列印列表中元素的個數
    System.out.println(collection);//列印collection
    /*刪除collection中單個元素
    //collection.remove("西瓜");
    //collection.clear();//清空
    System.out.println(collection);*/
    //遍歷元素
    /*使用foreach來實現遍歷*/
    for(Object a:collection){
    System.out.println(a);
    }
    /*
    使用迭代器來實現迭代
    */
    System.out.println("=================================================");
    Iterator iterator = collection.iterator();//對collection進行迭代的迭代器,返回值是一個介面Iterator
    /*
    hasNext():有沒有下一個元素
    next():獲取下一個元素
    remove():刪除當前元素
    */
    while(iterator.hasNext()){

    String next=(String)iterator.next();

    System.out.println(next);
    //iterator.remove();
    //collection.remove(next);在使用迭代器的時候不能使用collection.remove方法

    }
    System.out.println("元素個數"+collection.size());//列印列表中元素的個數
    //判斷
    System.out.println(collection.contains("香蕉"));//判斷是否含有香蕉
    System.out.println(collection.isEmpty());//判斷是否為空
    }
    }

  1. List介面的使用

    • add():新增

    • remove():刪除

    • iterator():迭代器

    • get():根據角標來獲取元素

    • listIterator():list專有的迭代器

    • list.nextIndex():返回next後元素的索引

    • list.previousindex():返回前一個元素的索引

    • contain():判斷是否有xx元素

    • isEmpty():判斷是否為空

    • indexof():獲取該元素的位置

    • sublist():返回子列表,可以指定位置含頭不含尾

      package cn.ljy.Collection;

      import java.util.*;

      public class Demo04 {
      public static void main(String[] args) {
      List list=new ArrayList<>();
      //新增元素
      list.add("apple");
      list.add("xiaomi");
      list.add("huawei");
      //刪除元素
      list.remove(new String("apple"));
      //遍歷列表(有下標可以使用for迴圈)
      System.out.println("============================使用for迴圈的遍歷=============================");
      for (int i=0;i< list.size();i++){
      System.out.println(list.get(i));
      }
      System.out.println("============================使用foreach迴圈的遍歷=============================");
      for (Object l1:list) {
      System.out.println(l1);
      }
      System.out.println("============================使用迭代器的遍歷=============================");
      Iterator it=list.iterator();
      while (it.hasNext()){
      System.out.println(it.next());
      }
      System.out.println("============================使用list迭代器的從前往後遍歷=============================");
      ListIterator ite= list.listIterator();
      while(ite.hasNext()){
      System.out.println(ite.nextIndex()+":"+ite.next());

      }
      System.out.println("============================使用list迭代器的從後往前遍歷===============================");
      while(ite.hasPrevious()){
      System.out.println(ite.previousIndex()+":"+ite.previous());
      }
      //判斷是否有xx元素,判斷是否為空
      boolean b1=list.contains("xiaomi");
      System.out.println(b1);
      System.out.println(list.isEmpty());
      //獲取該元素的索引
      System.out.println(list.indexOf("huawei"));
      //返回子列表
      System.out.println(list.subList(0, 1));
      }
      }

  • List常用的實現類

    • ArrayList:

      原始碼分析:DEFAULT_CAPACITY=10;預設容量(如果沒有像集合中新增任何元素時,容量為0,新增一個任意元素後,容量變為10,每次擴容都是容量變為原來的1.5倍)

      elementData:存放元素的陣列

      size:實際元素個數

    • Vector:(遍歷需要使用列舉器,其他與ArrayList相同)

      Enumeration en=vector.elements();
      while(en.hasMoreElements()){
      String o=(String)en.nextElement();
      System.out.println(o);
      }
    • LinkedList:ArrayList使用的方法也可以在Linked List中使用(也就是雙項鍊表)

    1. Set型別的介面

    • 方法和list一樣

    • 無序,沒有下標(在新增的時候沒有順序)

    • 不能重複

      package cn.ljy.Collection;

      import java.util.HashSet;
      import java.util.Iterator;
      import java.util.Set;

      public class Demo06 {
      public static void main(String[] args) {
      Set<String> s=new HashSet<>() ;
      s.add("l");
      s.add("lk");
      s.add("lj");
      s.add("ljy");
      System.out.println("元素個數為:"+s.size());
      System.out.println(s.toString());//無序
      //遍歷
      Iterator it= s.iterator();
      while(it.hasNext()){
      System.out.println(it.next());
      }

      }
      }

    Set實現類

    • HashSet基於HashCode運算元素存放,當放入元素的雜湊碼相同時呼叫equals進行確認,為true拒絕存入

    • TreeSet:紅黑樹儲存,當ComparableTo方法返回值為0判斷元素為重複

      • Comparator:進位制比較器的使用

        package cn.ljy.Collection;

        import com.sun.source.util.Trees;

        import java.util.Comparator;
        import java.util.TreeSet;

        public class Demo08 {
        public static void main(String[] args) {
        TreeSet<Student> t=new TreeSet<>(new Comparator<Student>() {
        @Override
        public int compare(Student o1, Student o2) {
        int n1=o1.getAge()-o2.getAge();
        int n2=o1.getName().compareTo(o2.getName());
        return n1==0?n2:n1;
        }
        });
        Student s1=new Student("ljy",10);
        Student s2=new Student("ljy",10);
        t.add(s1);
        t.add(s2);
        System.out.println(t.size());

        }
        }

泛型

  1. 泛型類

  2. 泛型 介面

  3. 泛型方法

  4. 泛型集合

Map集合

  1. Map介面的使用

    • 儲存鍵值對

    • 鍵不能重複,值可以重複

    • 無序

package cn.ljy.Collection;

import javax.swing.text.html.parser.Entity;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Demo09 {
public static void main(String[] args) {
Map<String,String> m= new HashMap<String,String>();
m.put("1","l");//新增put();
m.put("2","j");
m.put("3","y");
System.out.println("元素個數為:"+m.size());
m.remove("2");//移除();
System.out.println("元素個數為:"+m.size());
//遍歷
System.out.println("+======================================+");
Set<String> keys=m.keySet();//Keyset():是把key的值提取到m這個空間中
for (String key:keys){
System.out.println(key);
}
System.out.println("+======================================+");
Set<Map.Entry<String,String>> map=m.entrySet();//entrySet():方法是把整個鍵值對提取出來放入空間
for (Map.Entry map1:map){
System.out.println(map1);

}
//判斷
System.out.println(m.containsKey("1"));//判斷是否有這個key
System.out.println(m.containsValue("l"));//判斷是否有這個值
}
}
  1. Map的實現類

    • HashMap集合的使用

      • 儲存結構:雜湊表(陣列+連結串列+紅黑樹)

      • 使用Key的hashcode和equals來判斷是否重複

    • TreeMap:和TreeSet相識