先上我的结论:这个东西我觉得很重要,比多线程还是好理解一些。也是我目前学java里面感觉以后会用到(多线程真的生涩难懂,原谅我的菜)。
上一张网上的图,十分感谢,我觉得图片比文字更加的好理解。
这是从网上搜到的一张图,很重要。
先看看看Collection的原码
- Collection是一个接口,接口,接口
- 它下面有三个接口List,Queue,Set。他们还是接口,接口,接口
下图就时是List接口
为什么一直强调接口呢,我也不知道,反正我之前不知道。
List接口的实现类
- ArrayList- 十分像可变长数组。特点就是有下标,也就有顺序,元素可以重复遍历比较容易。
- LinkedList-链表。Java中是双向链表,添加删除比较容易。
- Set-集合,特点就是无序,无下标,元素无重复。
常见使用方法
使用ArrayList,需要在头部添加上import java.util.ArrayList;
ArrayList<Integer> arraylist = new ArrayList<Integer>(); //指定为Intteger类型的ArrayList
//增,采用对象.add(加的值,应该来说是对象,这里不是基本数据类型)
arraylist.add(123);
arraylist.add(456);
arraylist.add(789);
//删,采用对象.remove(下标)
arraylist.remove(1);
//查找
Integer num = arraylist.get(1); //对象.get(下标)得到值
System.out.println(num);
//遍历
//方法1:通过下标来
for( int i = 0 ; i < arraylist.size() ; i++ ) {//arraylist.size()是返回元素的个数。
System.out.println(arraylist.get(i));
}
//方法2:foreach只能遍历整个列表,就不用下标了
for(Integer res : arraylist) { //返回类型 对象名 : 遍历的对象
System.out.println(res);
}
使用LinkedList,需要在头部添加上import java.util.LinkedList;
其他用法和ArrayList一样,就是使用链表保存得到
LinkedList<Integer> linkedlist = new LinkedList<Integer>();
//增,采用对象.add(加的值,应该来说是对象,这里不是基本数据类型)
linkedlist.add(123);
linkedlist.add(456);
linkedlist.add(789);
//删,采用对象.remove(下标)
linkedlist.remove(1);
//查找
Integer num = linkedlist.get(1); //对象.get(下标)得到值
System.out.println(num);
//遍历
//方法1:通过下标来
for( int i = 0 ; i < linkedlist.size() ; i++ ) {//arraylist.size()是返回元素的个数。
System.out.println(linkedlist.get(i));
}
//方法2:foreach只能遍历整个列表,就不用下标了
for(Integer res : linkedlist) { //返回类型 对象名 : 遍历的对象
System.out.println(res);
}
使用HashSet:需要在头部添加上import java.util.HashSet;
HashSet<String> hashset = new HashSet<String>();
//添加
hashset.add("one");
hashset.add("two");
hashset.add("three");
hashset.add("four");
hashset.add("five");
hashset.add("six");
hashset.add("one");
hashset.add("one");
hashset.add("one");
//输出看看
System.out.println(hashset);
//删除
hashset.remove("one");
//输出看看
System.out.println(hashset);
//遍历输出,没有下标,使用foreach遍历也可以使用iteraor
//foreach循环
for( String str : hashset) {
System.out.println(str);
}
//iteraor迭代器,效果和foreach效果是一样的
Iterator<String> iterator = hashset.iterator();
while( iterator.hasNext()) {
System.out.println(iterator.next());
}
set里面是无序,无下标的,不能重复。