java中集合框架的两大分支,分别为Collection和Map
Collection
- Collection和Map都来自于java.util包。
- Collection接口常用的子接口为List 和 Set
List
- List是有序的可以通过下标(索引)来精确的控制元素的插入位置以及获取元素
- List允许重复元素
- ArrayList是List 接口常用的实现类
- ArrayList
- Arraylist是大小可变的实现类,允许null元素的存在
- 基本数据类型在泛型中使用的是包装类(int => Integer)
- ArrayList 不是线程安全的包装类,但是vector是线程安全的List接口的实现类
- LinkedList类是List接口的链表实现
- 基本数据类型在泛型中使用的是对应的包装类
ArrayList使用
//使用ArrayList要导入 List和ArrayList包
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
数组的迭代
//第一种循环 for循环
for(int i = 0; i < list.size();i++ ){
//list.get(index) 取值
System.out.println(list.get(i));
}
//第二种循环 for each
for(String str : list){
System.out.println(str);
}
//第三种方法 迭代器
//使用这个方法要先导入包java.util.Iterator;
//相比来说for each 更加方便 作为了解
Iterator<String> itr = list.iterator();
while(itr.hasNext()){
String str = itr.next();
System.out.println(str);
}
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add(2, "222");
//subList 截取
List<String> li =list.subList(0, 2);
for(String str : li){
System.out.println(str);
}
//替换某一位置的值 set
list.set(0, "111");
// 从此列表中移除第一次出现的指定元素(如果存在)
//两种方法 1:通过索引 2:通过元素内容
list.remove(0);
list.remove("bbb");
//contains方法 判断是否有此值
System.out.println(list.contains("as"));
//indexof 第一次出现该元素的索引值 没有返回-1
System.out.println(list.indexOf("aaa"));
//lastIndexOf 最后一次出现该元素的索引值 没有返回-1
System.out.println(list.lastIndexOf("ccc"));
}
Set
- Set接口不允许重复元素出现
- hashSet是Set的实现。
hashSet
- 该类存放的元素是无序的,允许null元素
- HashSet不是安全线程的类
- TreeSet类是Set有序的实现类!