集合的概述
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):添加元素,添加成功返回true
c.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
*/
集合存储对象的原理
注意:集合存储对象,存的不是对象本身,而是存的对象地址
标签:框架,System,println,add,集合,public,out From: https://www.cnblogs.com/arioya/p/18679004