List 集合
常用的list集合是ArrayList:一次只能儲存一個元素!
1. 在創建這個集合的對象時:
一定要指定這個集合存儲的數據類型! 否則這個集合的數據是不安全的。
2. 與數組的區別:
①數組的長度是固定的, 集合的長度是可變的。
②數組可以存儲基本類型和引用數據類型的數據.集合不可以存儲基本數據類型, 只能存儲引用數據類型
3. 如果集合中需要存儲基本類型的數據, 集合的類型必須指定爲對應的包裝類型
4. list集合中的常用方法 (E:element元素)
(1)add(E): 往集合中添加一個元素
(2)add(index,E): 把元素添加到指定的位置, 原來的內容會被擠到後面
(3)get(index): 通過索引獲取集合中對應的內容
(4)size(): 獲取集合的大小
(5)remove(index): 根據索引刪除指定位置的內容, 返回被刪除的元素
(6)remove(Object): 刪除集合中的指定對象, 如果有多個相同的對象, 只會刪除第一個
(7)contains(E): 判斷集合中是否包含指定的元素
(8)indexOf(E): 獲取元素在集合中第一次出現的位置
(9)lastIndexOf(E): 獲取元素在集合中最後一次出現的位置
(10)isEmpty(): 判斷集合中的元素是否爲空
(11)set(index,E):把指定位置的內容修改掉,返回的是被修改的內容
(12)clear():清空集合中得所有元素
(13)toArray():把集合轉換成Object數組,注意不能轉換成其他數組!
因爲toArray方法引入的比範型晚,爲了兼容早期java代價,toArray保留了返回類型爲Object
舉例:實現1到101能被7整除的數,並保存到數組裏面。
在java中數組的大小是固定的,在不知道長度的情況下,使用數組可以採用先定義集合,最後集合轉數組,可以實現一樣的效果
代碼實現:
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Main2{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<Integer>lists = new ArrayList<>();//定義了集合
for (int i = 1; i <=101; i++) {
if(i%7==0) {
lists.add(i);//添加元素
}
}
Object[]arr = lists.toArray();//轉成數組
for (int j = 0; j < arr.length; j++) {//遍歷輸出
System.out.println(arr[j]);
}
}
}
在這裏需要注意一個地方:
必須要使用包裝類,不然會報錯!
相關問題:
(1)關於remove();
1.
2.
(2)list集合排序:
Collections.sort
Set集合
1. Set集合特點:
(1)一次只能存一個元素
(2)不能儲存重複的元素
(3)儲存順序和取出來的順序不一定一致
2. 常用的方法:
TreeSet方法,HashSet方法
3. TreeSet簡介:
(1)TreeSet是一個有序集合
(2)TreeSet存儲唯一的元素
(3)她按升序對元素進行排序
例如:
4. TreeSet方法:
TreeSet的方法總結:
修飾符和類型 | 方法和描述 |
---|---|
boolean |
add(E e)
將指定的元素添加到這套,如果它已不存在。 |
boolean |
addAll(Collection<? extends E> c)
在加入這一組指定的集合中添加的所有元素。 |
E |
ceiling(E e)
返回最小的元素在這一組大於或等於給定的元素,則 |
void |
clear()
從這一組中移除所有元素。 |
Object |
clone()
返回此 |
Comparator<? super E> |
comparator()
返回用於排序在這集,或空元素,如果這套使用自然排序其元素的比較。 |
boolean |
contains(Object o)
如果此集合包含指定的元素,則返回 |
Iterator<E> |
descendingIterator()
返回迭代器中這套降序排序的元素。 |
NavigableSet<E> |
descendingSet()
返回逆序視圖中包含的元素這一套。 |
E |
first()
返回第一個 (最低) 元素當前在這一套。 |
E |
floor(E e)
返回的最大元素在這一組小於或等於 |
SortedSet<E> |
headSet(E toElement)
返回其元素是嚴格小於toElement這套的部分視圖. |
NavigableSet<E> |
headSet(E toElement, boolean inclusive)
返回一個視圖的這部分設置的元素都小於 (或等於,如果 |
E |
higher(E e)
返回最小的元素在這套嚴格大於給定的元素,則 |
boolean |
isEmpty()
如果此集不包含任何元素,則返回 |
Iterator<E> |
iterator()
返回迭代器中這套以升序排序的元素。 |
E |
last()
在這套目前返回的最後一個 (最高) 的元素。 |
E |
lower(E e)
在這一套嚴格的小於給定的元素,則 |
E |
pollFirst()
檢索和刪除第一個 (最低) 元素,或如果此集合爲空,則返回 |
E |
pollLast()
檢索和刪除的最後一個 (最高) 的元素,或如果此集合爲空,則返回 |
boolean |
remove(Object o)
從這一組中移除指定的元素,如果它存在。 |
int |
size()
在這套 (其基數) 中返回的元素的數目。 |
NavigableSet<E> |
subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
返回此集的部分視圖的元素範圍從 |
SortedSet<E> |
subSet(E fromElement, E toElement)
返回視圖的部分的這一套的元素範圍從fromElement,具有包容性,到toElement,獨家。 |
SortedSet<E> |
tailSet(E fromElement)
返回其元素是大於或等於fromElement這套的部分視圖. |
NavigableSet<E> |
tailSet(E fromElement, boolean inclusive)
返回其元素是大於 (或等於,如果 |
看概念肯定會很生澀吧,來一起看一道題吧hhh!
舉例說明:杭電oj2034
代碼實現:
import java.math.BigInteger;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
int m = sc.nextInt();
if(n==0&m==0){
break;
}
Set<Integer>sets= new TreeSet<>();//建立set集合
for (int i = 0; i <n ; i++) {
sets.add(sc.nextInt());//添加set元素
}
for (int i = 0; i <m ; i++) {
int a = sc.nextInt();
if(sets.contains(a)){//如果包含這個元素,證明元素重複,集合相減應無重複元素
sets.remove(a);//所以移除這個元素
}
}
if(sets.isEmpty()){//如果集合是空的證明無元素
System.out.println("NULL");
}else{
for (Integer i:sets){
System.out.print(i+" ");
}
System.out.println();
}
}
}
}
Map集合
額 (⊙o⊙)…暫時特麼還不會,等會了時候我再寫上例題還有詳解O(∩_∩)O哈哈~
若有錯誤的地方歡迎指出謝謝!