《賽博朋克2077》打上50多個Mod 3090光追演示
集合
-
是物件的容器,實現了對物件的常用操作,實現陣列的功能
-
和陣列的區別
-
陣列長度固定,集合長度不固定
-
陣列可以儲存基本型別和引用型別,集合只能儲存引用型別
-
Collection體系集合
-
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());//判斷是否為空
}
}
-
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中使用(也就是雙項鍊表)
-
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>() {
-
-
泛型
-
泛型類
-
泛型 介面
-
泛型方法
-
泛型集合
Map集合
-
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"));//判斷是否有這個值
}
}
-
Map的實現類
-
HashMap集合的使用
-
儲存結構:雜湊表(陣列+連結串列+紅黑樹)
-
使用Key的hashcode和equals來判斷是否重複
-
-
-
-