集合和數(shù)組的區(qū)別主卫?
- 數(shù)組:存儲(chǔ)相同類型的容器(基本數(shù)據(jù)類型,引用數(shù)據(jù)類型)鹃愤;定長(zhǎng)
- 集合:存儲(chǔ)對(duì)象(引用數(shù)據(jù)類型)簇搅,自動(dòng)擴(kuò)充
集合
- 存儲(chǔ)數(shù)據(jù)的容器,所存儲(chǔ)的每個(gè)對(duì)象稱為一個(gè)元素
- 集合的API都來(lái)自于JAVA.util包
- 存儲(chǔ)不同數(shù)據(jù)類型的數(shù)據(jù)软吐,只能存儲(chǔ)
引用數(shù)據(jù)類型
- 不定長(zhǎng)
集合的API
Collection接口:所有集合(List和Set)的父類
- Object[ ] toArray()將集合轉(zhuǎn)換成數(shù)組
- int size()遍歷集合使用
Set接口:Collection子接口 無(wú)序無(wú)重復(fù)
- 無(wú)序:元素放入的順序和真實(shí)存儲(chǔ)的順序不同
- 不重復(fù):相同的對(duì)象只保留一個(gè)瘩将,自動(dòng)去重
Set接口的實(shí)現(xiàn)類
- HashSet:真實(shí)的存儲(chǔ)數(shù)據(jù)的順序:(按照元素的哈希碼值進(jìn)行數(shù)據(jù)的排放)
public static void main(String[] args) {
HashSet<Object> set = new HashSet<>();
set.add("apple");
set.add("grape");
set.add("pear");
set.add("liwi");
set.add(1);
System.out.println(set.size());//5
//用迭代器遍歷集合
//前提:判空 集合是否為 null和 isEmpty(),如果為空 返回true,否則反之
//1.構(gòu)建迭代器對(duì)象
//2.調(diào)用hasNext() 判斷迭代器中是否有下一個(gè)元素
//3.next() 獲取下一個(gè)元素
//if ( set!=null && set.size()>0) {
if ( set!=null && !set.isEmpty()) {
Iterator<Object> iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());//apple 1 pear grape liwi
}
}
//轉(zhuǎn)換成數(shù)組的形式
System.out.println(Arrays.toString(set.toArray()));
set.remove("apple");
System.out.println(set.size());
set.clear();
System.out.println(set.size());
}
- Treeset:真實(shí)的存儲(chǔ)數(shù)據(jù)的順序:(按照元素的(自然順序)升序排序)
public static void main(String[] args) {
TreeSet<Object> set = new TreeSet<>();
set.add("apple");
set.add("grape");
set.add("pear");
set.add("liwi");
if ( set!=null && !set.isEmpty()) {
Iterator<Object> iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());//apple grape liwi pear
}
}
}
public class Student implements Comparable<Student>{
private int sno;
private String sname;
private int age;
public Student() {
}
public Student(int sno, String sname, int age) {
this.sno = sno;
this.sname = sname;
this.age = age;
}
public int getSno() {
return sno;
}
public void setSno(int sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"sno=" + sno +
", sname='" + sname + '\'' +
", age=" + age +
'}';
}
@Override
public int compareTo(Student s) {
if (this.age>s.age){
return 1;
}else {
return -1;
}
}
List接口:Collection的子接口 有序可重復(fù)
,索引值從0開始
- 有序:放元素的順序和元素真實(shí)存儲(chǔ)的順序一致
- 可重復(fù):可存放重復(fù)的數(shù)據(jù)對(duì)象
List接口的實(shí)現(xiàn)類
- ArrayList:
public static void main(String[] args) {
List<String> list = new ArrayList<String>();//向上轉(zhuǎn)型:方便程序的擴(kuò)展
list.add("apple");
list.add("pear");
list.add("lucky");
list.add(1,"ly");
System.out.println(list.size());
//循環(huán)遍歷
if (list!=null&&!list.isEmpty()){
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
//for循環(huán)遍歷
if (list!=null&&!list.isEmpty()){
for (int i = 0; i <list.size() ; i++) {
System.out.println(list.get(i));
}
}
//for each循環(huán)遍歷
for (String s:list) {
System.out.println(s);
}
list.remove("ly");//根據(jù)字符串
list.remove(1);//根據(jù)索引值
list.set(2,"asd");//將索引值為2的元素更改為“asd”
}
- LinkedList:
ArrayList與LinkedList的區(qū)別
- ArrayList線性存儲(chǔ),隨機(jī)查詢
- LinkedList鏈表存儲(chǔ)姿现,元素的刪除和存儲(chǔ)的操作性能比較高
泛型:指定集合想要存放的數(shù)據(jù)類型
Map接口:以鍵值對(duì)的形式進(jìn)行數(shù)據(jù)存儲(chǔ)的集合容器 一一對(duì)應(yīng)
(映射)
- 每一個(gè)元素有兩部分構(gòu)成:鍵 值
- 鍵是唯一的
- 如果存儲(chǔ)相同的鍵的元素肠仪,則值會(huì)被覆蓋
Map接口的實(shí)現(xiàn)類
- HashMap:
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(1, "a");
map.put(2, "b");
map.put(3, "c");
map.put(1, "e");
map.remove(3);
System.out.println(map.containsKey(3));//false
System.out.println(map.containsValue("e"));//true
System.out.println(map.get(1));//e
//遍歷
//1.判空
//2.獲取所有的key的集合 map.keySet()
//3.構(gòu)建迭代器對(duì)象
//4.調(diào)用hasNext() 判斷迭代器中是否有下一個(gè)元素
//5.next() 獲取下一個(gè)元素
//6.根據(jù) 鍵 獲取 值
if (map != null && map.size() > 0) {
Set<Integer> set = map.keySet();
Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext()) {
Integer key = iterator.next();
String value = map.get(key);
System.out.print(key + " " + value);
System.out.println();
}
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者