学习视频
集合的概述
public class Demo01 {public static void main(String[] args) {//简单确认一下Collection集合特点ArrayList<String> list = new ArrayList<>();list.add("java1");list.add("java2");list.add("java3");list.add("java1");System.out.println(list);System.out.println(list.get(1));HashSet<String> set = new HashSet<>();set.add("java1");set.add("java2");set.add("java3");set.add("java2");set.add("java3");System.out.println(set);}
}
Collection集合
为什么先学Collection集合呢?
Collection是单列集合的祖宗,它规定的方法(功能)是全部单列集合都会继承的。
常见方法
public class Demo02 {public static void main(String[] args) {Collection<String> c = new ArrayList<>(); //多态写法//1.public boolean add(E e):添加元素,添加成功返回truec.add("java1");c.add("java1");c.add("java2");c.add("java3");System.out.println(c.add("java2"));System.out.println(c);//2. public int size():获取集合的大小System.out.println(c.size());//3. public boolean contains(Object obj);判断集合中是否包含某个元素:System.out.println(c.contains("java1"));System.out.println(c.contains("Java1"));//4. public boolean remove(E e);删除某个元素:如果多个重复元素默认删除前面的第一个System.out.println(c.remove("java1"));System.out.println(c);//5. public Object[] toArray();把集合转换成数组//用Object[]接可以尽可能接住多种不同类型的元素Object[] arr = c.toArray();System.out.println(Arrays.toString(arr));//也可以指定类型,但是要确保与集合中元素数据类型一致String[] arr2 = c.toArray(new String[c.size()]);System.out.println(Arrays.toString(arr2));//6. public void clear();清空集合的元素c.clear();System.out.println(c);//7. public boolean isEmpty();判断集合是否为空,是空返回true,反转System.out.println(c.isEmpty());//把一个集合的全部数据倒入到另一个集合中去Collection<String> c1 = new ArrayList<>();c1.add("aaa1");c1.add("aaa2");Collection<String> c2 = new ArrayList<>();c2.add("bbb1");c2.add("bbb2");c1.addAll(c2);System.out.println(c1);//只是拷贝了一份,c2中的数据并没有消失System.out.println(c2);}
}
遍历方式
迭代器
public class Demo03 {public static void main(String[] args) {Collection<String> c = new ArrayList<>();c.add("aaa");c.add("bbb");c.add("ccc");c.add("ddd");System.out.println(c);//使用迭代器遍历集合//1.从集合对象中获取迭代器对象Iterator<String> it = c.iterator();System.out.println(it.next());System.out.println(it.next());System.out.println(it.next());System.out.println(it.next());
// System.out.println(it.next());//出现异常//2.使用循环结合迭代器遍历集合Iterator<String> it1 = c.iterator();while (it1.hasNext()) {String ele = it1.next();System.out.println(ele);}}
}
/*
输出结果
[aaa, bbb, ccc, ddd]
aaa
bbb
ccc
ddd
aaa
bbb
ccc
ddd*/
增强for循环遍历
public class Demo04 {public static void main(String[] args) {Collection<String> c = new ArrayList<>();c.add("aaa");c.add("bbb");c.add("ccc");c.add("ddd");System.out.println(c);//使用增强for遍历结合或者数组for (String ele : c) {System.out.println(ele);}}
}
/*输出结果
[aaa, bbb, ccc, ddd]
aaa
bbb
ccc
ddd*/
Lambda表达式
public class Demo05 {public static void main(String[] args) {Collection<String> c = new ArrayList<>();c.add("aaa");c.add("bbb");c.add("ccc");c.add("ddd");System.out.println(c);//default void forEach(Consumer<? super T> action):结合Lambda表达式遍历集合//Consumer是个接口,可以用匿名类实现
// c.forEach(new Consumer<String>() {
// @Override
// public void accept(String s) {
// System.out.println(s);
// }
// });
//
// c.forEach((String s) -> {
// System.out.println(s);
// });
//
// c.forEach(s -> System.out.println(s));c.forEach(System.out::println);}
}
/*
[aaa, bbb, ccc, ddd]
aaa
bbb
ccc
ddd*/
集合存储对象的原理
注意:集合存储对象,存的不是对象本身,而是存的对象地址