java中什么是集合,如何使⽤集合,集合底层原理,ArrayList,LinkedList。。
1、集合概述
1.1、什么是集合?有什么⽤?
数组其实就是⼀个集合。集合实际上就是⼀个容器。可以来容纳其它类型的数据。
集合为什么说在开发中使⽤较多?
集合是⼀个容器,是⼀个载体,可以⼀次容纳多个对象。
在实际开发中,假设连接数据库,数据库当中有10条记录,
那么假设把这10条记录查询出来,在java程序中会将10条
数据封装成10个java对象,然后将10个java对象放到某⼀个
集合当中,将集合传到前端,然后遍历集合,将⼀个数据⼀个
数据展现出来。
1.2、集合不能直接存储基本数据类型,另外集合也不能直接存储java对象,
集合当中存储的都是java对象的内存地址。(或者说集合中存储的是引⽤。)
list.add(100); //⾃动装箱Integer
jdk怎么使用
注意:
集合在java中本⾝是⼀个容器,是⼀个对象。
集合中任何时候存储的都是“引⽤”。
1.3、在java中每⼀个不同的集合,底层会对应不同的数据结构。往不同的集合中
存储元素,等于将数据放到了不同的数据结构当中。什么是数据结构?数据存储的
结构就是数据结构。不同的数据结构,数据存储⽅式不同。例如:
数组、⼆叉树、链表、哈希表…
以上这些都是常见的数据结构。
你往集合c1中放数据,可能是放到数组上了。
你往集合c2中放数据,可能是放到⼆叉树上了。
你使⽤不同的集合等同于使⽤了不同的数据结构。
你在java集合这⼀章节,你需要掌握的不是精通数据结构。java中已经将数据结构
实现了,已经写好了这些常⽤的集合类,你只需要掌握怎么⽤?在什么情况下选择
哪⼀种合适的集合去使⽤即可。
new ArrayList(); 创建⼀个集合,底层是数组。
new LinkedList(); 创建⼀个集合对象,底层是链表。
new TreeSet(); 创建⼀个集合对象,底层是⼆叉树。
1.4、集合在java JDK中哪个包下?
java.util.*;
所有的集合类和集合接⼝都在java.util包下。
1.5、为了让⼤家掌握集合这块的内容,最好能将集合的继承结构图背会
集合整个这个体系是怎样的⼀个结构,你需要有印象。
1.6、在java中集合分为两⼤类:
⼀类是单个⽅式存储元素:
单个⽅式存储元素,这⼀类集合中超级⽗接⼝:java.util.Collection;
⼀类是以键值对⼉的⽅式存储元素
以键值对的⽅式存储元素,这⼀类集合中超级⽗接⼝:java.util.Map;
2、总结重点:
第⼀个重点:把集合继承结构图背会。
第⼆个重点:把Collection接⼝中常⽤⽅法测试⼏遍。
多态遍历Collection
import ArrayList;
import Collection;
/*
关于java.util.Collection接⼝中常⽤的⽅法。
1、Collection中能存放什么元素?
没有使⽤“泛型”之前,Collection中可以存储Object的所有⼦类型。
使⽤了“泛型”之后,Collection中只能存储某个具体的类型。
集合后期我们会学习“泛型”语法。⽬前先不⽤管。Collection中什么都能存,
只要是Object的⼦类型就⾏。(集合中不能直接存储基本数据类型,也不能存
java对象,只是存储java对象的内存地址。)
2、Collection中的常⽤⽅法
boolean add(Object e) 向集合中添加元素
int size()  获取集合中元素的个数
void clear() 清空集合
boolean contains(Object o) 判断当前集合中是否包含元素o,包含返回true,不包含返回false        boolean remove(Object o) 删除集合中的某个元素。
boolean isEmpty()  判断该集合中元素的个数是否为0
boolean isEmpty()  判断该集合中元素的个数是否为0
Object[] toArray()  调⽤这个⽅法可以把集合转换成数组。【作为了解,使⽤不多。】
*/
public class CollectionTest01 {
public static void main(String[] args){
// 创建⼀个集合对象
//Collection c = new Collection(); // 接⼝是抽象的,⽆法实例化。
// 多态
Collection c =new ArrayList();
// 测试Collection接⼝中的常⽤⽅法
c.add(1200);// ⾃动装箱(java5的新特性。),实际上是放进去了⼀个对象的内存地址。Integer x = new Integer(1200);
c.add(3.14);// ⾃动装箱
c.add(new Object());
c.add(new Student());
c.add(true);// ⾃动装箱
// 获取集合中元素的个数
System.out.println("集合中元素个数是:"+ c.size());// 5
// 清空集合
c.clear();
System.out.println("集合中元素个数是:"+ c.size());// 0
// 再向集合中添加元素
c.add("hello");// "hello"对象的内存地址放到了集合当中。
c.add("world");
c.add("浩克");
c.add("绿巨⼈");
c.add(1);
// 判断集合中是否包含"绿巨⼈"
boolean flag = c.contains("绿巨⼈");
System.out.println(flag);// true
boolean flag2 = c.contains("绿巨⼈2");
System.out.println(flag2);// false
System.out.ains(1));// true
System.out.println("集合中元素个数是:"+ c.size());// 5
// 删除集合中某个元素
System.out.println("集合中元素个数是:"+ c.size());// 4
// 判断集合是否为空(集合中是否存在元素)
System.out.println(c.isEmpty());// false
// 清空
c.clear();
System.out.println(c.isEmpty());// true(true表⽰集合中没有元素了!)
c.add("abc");
c.add("def");
c.add(100);
c.add("helloworld!");
c.add(new Student());
// 转换成数组(了解,使⽤不多。)
Object[] objs = c.toArray();
for(int i =0; i < objs.length; i++){
// 遍历数组
Object o = objs[i];
System.out.println(o);
}
}
}
class Student{
class Student{
}
深⼊Collection中的contains⽅法
注意:remove⽅法同理,底层调⽤了equals⽅法
import ArrayList;
import Collection;
/
*
深⼊Collection集合的contains⽅法:
boolean contains(Object o)
判断集合中是否包含某个对象o
如果包含返回true,如果不包含返回false。
contains⽅法是⽤来判断集合中是否包含某个元素的⽅法,
那么它在底层是怎么判断集合中是否包含某个元素的呢?
调⽤了equals⽅法进⾏⽐对。
equals⽅法返回true,就表⽰包含这个元素。
*/
public class CollectionTest04 {
public static void main(String[] args){
// 创建集合对象
Collection c =new ArrayList();
// 向集合中存储元素
String s1 =new String("abc");// s1 = 0x1111
c.add(s1);// 放进去了⼀个"abc"
String s2 =new String("def");// s2 = 0x2222
c.add(s2);
// 集合中元素的个数
System.out.println("元素的个数是:"+ c.size());// 2
// 新建的对象String
String x =new String("abc");// x = 0x5555
// c集合中是否包含x?结果猜测⼀下是true还是false?
System.out.ains(x));//判断集合中是否存在"abc" true }
}
第三个重点:把迭代器弄明⽩。
迭代器使⽤的过程中,原集合不可改动,否则会出现异常
迭代器遍历ArrayList
/**
* 关于集合遍历/迭代专题。(重点:五颗星*****)
*/
public class CollectionTest02 {
public static void main(String[] args){
// 注意:以下讲解的遍历⽅式/迭代⽅式,是所有Collection通⽤的⼀种⽅式。
// 在Map集合中不能⽤。在所有的Collection以及⼦类中使⽤。
// 创建集合对象
Collection c =new ArrayList();// 后⾯的集合⽆所谓,主要是看前⾯的Collection接⼝,怎么遍历/迭代。
// 添加元素
c.add("abc");
c.add("def");
c.add(100);
c.add(new Object());
// 对集合Collection进⾏遍历/迭代
/
/ 第⼀步:获取集合对象的迭代器对象Iterator
Iterator it = c.iterator();
// 第⼆步:通过以上获取的迭代器对象开始迭代/遍历集合。
/*
以下两个⽅法是迭代器对象Iterator中的⽅法:
boolean hasNext()如果仍有元素可以迭代,则返回 true。
Object next() 返回迭代的下⼀个元素。
*/
while(it.hasNext()){
Object obj = it.next();
System.out.println(obj);
}
// ⼀直取,不判断,会出现异常:java.util.NoSuchElementException
/*while(true){
Object obj = it.next();
System.out.println(obj);
}*/
/*boolean hasNext = it.hasNext();
System.out.println(hasNext);
if(hasNext) {
// 不管你当初存进去什么,取出来统⼀都是Object。
Object obj = it.next();
System.out.println(obj);
}
hasNext = it.hasNext();
System.out.println(hasNext);
if(hasNext) {
Object obj = it.next();
System.out.println(obj);
}
hasNext = it.hasNext();
System.out.println(hasNext);
if(hasNext) {
Object obj = it.next();
System.out.println(obj);
}
hasNext = it.hasNext();
System.out.println(hasNext);
if(hasNext) {
Object obj = it.next();
System.out.println(obj);
}
hasNext = it.hasNext();
System.out.println(hasNext);
if(hasNext) {
Object obj = it.next();
System.out.println(obj);
}*/
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。