java集合基础_java常用集合基础知识
【純出自個(gè)人筆記,如有錯(cuò)誤,望改正,謝謝哈!
學(xué)習(xí)~】
一、Java集合
1、集合類:容器類 裝對象的(不能存放基本數(shù)據(jù)類型,但是里面看到的其實(shí)是包裝類型)
java.util包
ArrayList底層是一個(gè)對象數(shù)組
--------------------------------------------------------------------------------------------
List中是可以存放重復(fù)元素的。Set是不能有重復(fù)元素.
Ⅰ:ArrayList:
a. 添加 :
add();里面可以存放字符串或者基本包裝類型
ArrayList也可以存放布爾類型和對象
ArrayList list=new ArrayList();
list.add(1,"aa");這是指將aa字符串存放在arraylist集合索引的1位置(添加到指定位置);
list.size();是獲取元素的個(gè)數(shù),和數(shù)組的length,字符串的length()差不多。
list.add(list1);add里面還是可以放集合的
b.修改 :
list.set(0,200);這是修改指定位置的元素,這里是指修改了arraylist集合0索引的值該為200;集合的索引和數(shù)組的下標(biāo)差不多。
c.獲得 :
list.get(0);獲得,這是獲得list集合里的0索引處的值。它返回的類型是Object(Object obj=list.get(0);) 然后可以直接輸出這s.o.p(obj);打印出來的就是list集合的元素
d.遍歷集合:
用for循環(huán)也可以,但是集合List集合一般都用迭代器遍歷集合(Iterator,下面介紹)
e.清空集合元素:
list.clear();清空掉集合中所有的元素,如果清空,輸出就一對中括號“[]”表示集合里面沒有元素了。o(∩_∩)o
f.移除/刪除 集合中的元素:
remove();這是刪除集合中的某個(gè)元素。比如list.remove(1);這就是刪除掉集合中索引為1的元素(第二個(gè)),list.remove("aa");這是刪除掉集合中的元素,就是如果集合中有aa的字符串,就刪掉。 ?-----list.remove(new Integer(12));注意這種:要?jiǎng)h除集合中的數(shù)值,就必須要這樣(要指定包裝類)否則刪除的就是索引為12的元素,如果元素個(gè)數(shù)沒有13個(gè),那么就會(huì)出現(xiàn) 下標(biāo)越界異常。
---------------------------------------------------------------------------------------
Ⅱ:LinkedList:ArrayList便于進(jìn)行修改、獲得值的操作 ?LinkedList便于進(jìn)行增加和刪除操作
a.添加元素:
LinkedList添加元素也是add();基本用法和ArrayList差不多。但是LinkedList多了2個(gè)功能:addFirst()和addLast();這2個(gè),比如list.addFirst("asd");這是在集合的第一個(gè)位置放置asd的字符串;list.addLast("aa");這是在集合的最后一個(gè)位置放置aa字符串;
b.遍歷:
和arraylist也是一樣的。既可以用For循環(huán)遍歷,也可以用迭代器遍歷,推薦迭代器。 需要注意的是:在迭代器循環(huán)體內(nèi)是不可以直接對集合進(jìn)行添加刪除操作的。
---------------------------------------------------------------------------------------------
Ⅲ:Stack類表示后進(jìn)先出(LIFO)的對象堆棧(繼承自Vector)。
a.添加元素
stack添加元素是用push()方法的,比如:s.push("aaa");這是指在statck中添加aaa元素壓入棧中
b.移除元素:
s.pop();這是移除棧頂?shù)脑??是棧頂
c.查看元素:
Syso(s.peek());查看棧頂?shù)脑?#xff0c;表示只查看不剔除。
---------------------------------------------------------------------------------------------
Ⅳ:Vector ?底層是對象數(shù)組,線程安全的(同步)
Vector非常類似ArrayList,但是Vector是同步的。由Vector創(chuàng)建的Iterator,雖然和ArrayList創(chuàng)建的 Iterator是同一接口,但是,因?yàn)閂ector是同步的,當(dāng)一個(gè)Iterator被創(chuàng)建而且正在被使用,另一個(gè)線程改變了Vector的狀態(tài)(例如,添加或刪除了一些元素),這時(shí)調(diào)用Iterator的方法時(shí)將拋出ConcurrentModificationException,因此必須捕獲該異常。
---------------------------------------
以上是List 列表的知識點(diǎn)
===================================================================================
下面是Set 集的知識點(diǎn)回顧:
===================================================================================
Set ? 不能有重復(fù)的元素、沒有索引
Ⅰ、HashSet
a.添加元素:
set.add("aa"); set.add(new Object());基本上也差不多
b.清除元素用的也是clear();
c.移除 ?remove()的用法
d,遍歷HashSet: 注意,這里只能用迭代器(Iterator)遍歷,因?yàn)镾et集中是沒有索引的,所以不能用for。
例如: Iterator it = set.iterator();
while(it.hasNext()){
Object temp = it.next();
System.out.println(temp);
}
e,//由Object類中繼承來的hashcode、equals方法
//Set中判斷是否是重復(fù)的元素的過程:
//1、調(diào)用對象的hashcode方法,看返回的哈希碼值是否相同,若不相同,則認(rèn)為是不同的對象
//2、若相同,則再調(diào)用equals方法進(jìn)行判斷,若返回false,則認(rèn)為是不同的對象,否則(返回的是true)則認(rèn)為是同一個(gè)對象
例如 Student stu1 = new Student(1000,"張三");
Student stu2 = new Student(1001,"張三");
// System.out.println(stu1.hashCode());
// System.out.println(stu2.hashCode());
set.add(stu1);
set.add(stu2);
-----------------------------------------------------------------------------------------------
Set:不按照索引、不按照放入的次序存儲(chǔ)元素-->無序的
//不能存放重復(fù)元素
Ⅱ:TreeSet:具有排序功能的
a.添加元素也是add();//若放入的是數(shù)值,則按照數(shù)值大小升序排列;//若是字符串則按照字母的字 典順序。需要注意的是:放入的元素得是同一類型的。
b//若要將自定義的對象放入TreeSet中,必須該對象所在的類是實(shí)現(xiàn)了Comparable接口
例如:Student stu1 = new Student(1003,"zhangsan");
Student stu2 = new Student(1000,"lisi");
Student stu3 = new Student(1001,"wangwu");
set.add(stu1);
set.add(stu2);
set.add(stu3);
Iterator it = set.iterator();
while(it.hasNext()){
Student stu = it.next();
System.out.println(stu.getId()+"\t"+stu.getName());
}
System.out.println(set);
public class Student implements Comparable{
private int id;
private String name;
>>>>>>(此處省略構(gòu)造方法和set、get方法)<<<<<
@Override
public int hashCode() {
// System.out.println("調(diào)用了hashcode方法");
// return super.hashCode();
return 100;
}
@Override
public boolean equals(Object obj) {
// System.out.println("調(diào)用了equals方法");
// return super.equals(obj);
// return true;
Student stu = (Student)obj;
if(this.id==stu.id&&this.name.equals(stu.name)){
return true;
}else{
return false;
}
}
//排序規(guī)則
@Override
public int compareTo(Student stu) {
// return this.id-stu.id;//按照id的升序
// return stu.id-this.id;//按照id的降序
// return this.name.compareTo(stu.name);//按照name的升序
return stu.name.compareTo(this.name);
}
}
上面是Set集的回顧(都實(shí)現(xiàn)Collection接口)
===================================================================================
下面是Map映射知識點(diǎn)回顧
===================================================================================
/Map:映射關(guān)系 ? 存放的是鍵值對key-value
Map,存放元素是put();方法
1.HashMap:不是線程安全的 ? key和value都可以為null(但key只能有一個(gè)null值,value可以多個(gè))
例如 HashMap map = new HashMap();
map.put("", "");
map.put(null, null);//put()是放入元素
System.out.println(map);
2。Hashtable:1、線程安全的 ?古老集合 ?2、key和value都不能為null;獲得value值:Object temp = map.get(23);//根據(jù)key獲得value:-------->get(key);
例如: ? map.put("sa", "abc");
map.put(23, 34);
map.put(34, "cdf");
map.put(new Object(), "value");
注意map.put(null, "as");//key不能為null
map.put("aa", null);//value也不能為null
Hashtable遍歷:
Set sets = map.keySet();//返回所有的key ?Map中的key是以Set形式存放的,獲得所有KEY
Iterator it = sets.iterator();
while(it.hasNext()){
temp = it.next();//將key循環(huán)遍歷出來
Object value = map.get(temp);//然后根據(jù)Key來遍歷出value的值
System.out.println(value);
}
System.out.println(map);
3.TreeMap:?key具有排序功能 ? ?key不能為null value可以為null
//若key是數(shù)值 ?按照數(shù)值大小的升序
/*map.put(1001, "value");
map.put(1000, "lue");
map.put(1002, "alue");*/
//若key是字符串,按照字母的字典順序
/*map.put("bb", 23);
map.put("aa", 123);
map.put("cc", 3323);*/規(guī)則和TreeSet差不多,同樣只能存放一種類型,只不過TreeMap是一種類型的key。
//若key是自定義的對象,該對象所在的類實(shí)現(xiàn)Comparable接口
// Student stu1 = new Student(1003,"zhangsan");
// Student stu2 = new Student(1000,"lisi");
// Student stu3 = new Student(1001,"wangwu");
// map.put(stu1, 123);
// map.put(stu2, 23);
// map.put(stu3, 323);
//
// Set sets = map.keySet();
// Iterator it = sets.iterator();
// while(it.hasNext()){
// Student stu = it.next();
// System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+map.get(stu));
// }
// System.out.println(map);
// map.put(null, "");//key不能為null
map.put("aa", null);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
【有不對的地方,多多批正
】
總結(jié)
以上是生活随笔為你收集整理的java集合基础_java常用集合基础知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 跟随动画,Android
- 下一篇: 安装百分之80卡住_关注丨男子翻越高铁站