1. 程式人生 > 其它 >這是我自己學集合的時候一些總結

這是我自己學集合的時候一些總結

一、集合:瞭解使用集合的步驟

1.建立集合物件

2.建立元素物件

3.將元素物件新增到集合物件中

4.遍歷集合

(1)list集合程式碼如下:

public class test {

public static void main(String[] args) {

//1.建立集合物件

List list = new ArrayList();

//2.建立元素物件

student s1 = new student(1, "蘇少有");

student s2 = new student(2, "蘇少有2");

//3.將元素物件新增到集合物件中

list.add(s1);

list.add(s2);

System.out.println("list有"+list);

//獲取索引為1的元素

Object obj = list.get(1);

System.out.println("索引為1的是"+obj);

//獲取集合中的元素個數

System.out.println("集合長度為"+list.size());

//遍歷集合

for (int i = 0; i < list.size() ; i++) {

Object obj2 = list.get(i);

System.out.println("集合有"+obj2+"資料");

}

}

}

(2)增強for迴圈(for Each/迭代器)

*增強for迴圈

for(資料型別 變數名 :陣列或者集合物件) {

//迴圈體,變數以及元素

}

//增強for迴圈快捷鍵 iter+enter

增強for迴圈就是迭代器的簡寫模式。

*

* */

public class demo2 {

public static void main(String[] args) {

List list=new ArrayList();

list.add(10);

list.add(10);

list.add(20);

list.add(30);

list.add(40);

for(Object obj :list){

System.out.println(obj);

}

System.out.println("=========");

for (Object obj2 : list) {

Integer ii=(Integer)obj2;

System.out.println(ii);

}

}

}

(3)通過迭代器遍歷list集合

package demo3;

import java.util.ArrayList;

import java.util.List;

import java.util.ListIterator;

/*迭代器的常用方法

E.next(); 返回迭代器的下一個元素物件.再寫三層dao層查詢用到resultset 遍歷時while迴圈裡面有rs.next()

boolean hasNext(); 如果有元素可以迭代,則返回true

注意:列表迭代器是List體系中獨有的遍歷方式,可以在對集合遍歷的同時進行新增、刪除等操作。

但是必須通過呼叫列表迭代器的方法來實現。

迭代器的使用步驟:

1.根據集合物件獲取其物件的迭代器物件

2.判斷迭代器中是否有物件

3.如果有就獲取元素

總結:普通迭代器在遍歷集合的同時不能新增或刪除元素,否則會報:併發修改異常

列表迭代器在遍歷集合的同時可以新增刪除集合中的元素,但必須要用列表迭代器的方法

* */

public class test {

public static void main(String[] args) {

//需求:測試列表迭代器

List list = new ArrayList();

list.add("a");

list.add("b");

list.add("c");

//需求:判斷集合中如果有字串”b“,就在其後面新增一個新的字串:java

//1.根據集合物件獲取列表迭代器物件

ListIterator lit = list.listIterator();

//2.判斷迭代器中是否有物件

while (lit.hasNext()) {

//3.如果有就獲取元素

String s=(String)lit.next();

if ("b".equals(s)){

// list.add("java");這樣寫不行,必須呼叫列表迭代器的方法來實現

lit.add("java");

}

System.out.println(s);

}

System.out.println("========");

System.out.println(list);

}

}

(4)set集合

package demo6;

/* 單列集合(Collection)之Set集合

特點:無序,唯一

結論:Set集合保證所有的元素的唯一性依賴: equals()方法和hashCode()方法

*/

import java.util.HashSet;

import java.util.Iterator;

import java.util.Set;

public class test {

public static void main(String[] args) {

//需求:往Set集合中新增五個學生物件,然後遍歷

Set<student> set =new HashSet<student>();

student s1=new student("蘇少有",21);

student s2=new student("蘇少有2",22);

student s3=new student("蘇少有3",23);

student s4=new student("蘇少有4",24);

student s5=new student("蘇少有",21);

set.add(s1);

set.add(s2);

set.add(s3);

set.add(s4);

set.add(s5);

System.out.println(set);

System.out.println("-----------");

/*列印輸出語句時Set集合沒有“去重”?

因為Set集合保證元素的唯一性依賴:equals()和hashCode()兩個方法

你沒有在student類中重寫這兩個方法,預設呼叫的是Object類中的這兩個方法,

Object類中的equals()方法預設比較的是地址值是否相同

解決方案:

student類中重寫equals()和hashCode()方法

*/

//通過迭代器遍歷Set集合

//1.通過集合物件獲取物件的迭代器物件

Iterator<student> it = set.iterator();

//2.判斷迭代器中是否有元素

while (it.hasNext()){

//3.如果有就獲取元素

student s=it.next();

System.out.println(s);

}

System.out.println("--------");

//增強for迴圈

for (student stu : set) {

System.out.println(stu);

}

}

}

student實體類

package demo6;

import java.util.Objects;

public class student {

private String name;

private int age;

public student() {

}

public student(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return "student{" +

"name='" + name + '\'' +

", age=" + age +

'}';

}

@Override

public boolean equals(Object o) {

if (this == o) return true;

if (o == null || getClass() != o.getClass()) return false;

student student = (student) o;

return age == student.age && Objects.equals(name, student.name);

}

@Override

public int hashCode() {

return Objects.hash(name, age);

}

}

(5)Map集合

package demo7;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Set;

/* Map集合的特點

特點:

雙列集合,元素由鍵值對(Entry)構成;

key(鍵)----value(值)

注意:

(key)不可以重複,值(value)可以重複

應用:

Map<T1,T2> map = new HashMap<>();

解釋:

T1:表示鍵的資料型別

T2:表示值的資料型別

成員方法:

V put(K key,V value);新增元素(鍵值對的形式)

V get(Object key);根據鍵獲取對應的值

Set<k> keySet() 獲取所有鍵的集合;

遍歷Map集合步驟:

1.獲取所有鍵的集合 keySet()

2.遍歷所有的鍵,獲取到每一個鍵 迭代器 增強for

3.根據鍵,獲取指定值 get()

* */

public class test {

public static void main(String[] args) {

Map<Integer,student> map=new HashMap<Integer,student>();

student s1=new student("張三",21);

student s2=new student("李四",22);

student s3=new student("王五",23);

student s4=new student("張三",21);

map.put(1,s1);

map.put(2,s2);

map.put(3,s3);

map.put(4,s4);

//根據鍵獲取值

student stu1=map.get(2);

System.out.println(stu1);

//列印集合

System.out.println(map);

System.out.println("-----");

//遍歷集合

//1.獲取所有鍵的集合 keySet()

Set<Integer> keys = map.keySet();

//2.遍歷所有的鍵,獲取到每一個鍵 迭代器 增強for

Iterator<Integer> it = keys.iterator();

while(it.hasNext()){

//.根據鍵,獲取指定值 get()

Integer key = it.next();

student value = map.get(key);

System.out.println("key:"+key+"...value:"+value);

}

System.out.println("-------------");

//增強for

for (Integer key : keys) {

student value = map.get(key);

System.out.println("key:"+key+"....value:"+value);

}

}

}

.泛型

/*泛型的好處

型別安全

避免了型別轉換

* */

public class test {

public static void main(String[] args) {

//需求:演示泛型

//1.建立集合物件

List<String> list2=new ArrayList<String>();

//2.建立元素物件

list2.add("a");

list2.add("b");

list2.add("c");

//3.將元素物件新增到集合物件中

for (String s : list2) {

System.out.println(s);

}

}

}

.Collection類的使用

/* Collections:針對集合操作的工具類

成員方法:

max(Collection<T>) ;返回集合的最大元素

sort(List<T>); 根據元素的自然順序,將指定列表升序排列

reverse(List<T>); 反轉集合list裡的元素

shuffle(List<T>); 使用預設的隨機源隨機置換指定的列表

* */

public class test {

public static void main(String[] args) {

List<Integer> list = new ArrayList<Integer>();

list.add(1);

list.add(2);

list.add(2);

list.add(3);

list.add(5);

list.add(7);

list.add(4);

System.out.println("沒操作前,集合裡的元素有" + list);

System.out.println("----------");

//獲取集合最大元素

Integer max = Collections.max(list);

System.out.println("集合中的最大元素為"+max);

System.out.println("------------");

//對集合進行升序排列

Collections.sort(list);

System.out.println("s升序排列後集合為"+list);

Collections.reverse(list);

System.out.println("反轉後集合為"+list);

Collections.shuffle(list);

System.out.println("隨機集合元素為"+list);

}

}