1.Collection单例集合
集合:用来保存数据的容器
数组:ArrayList
格式:ArrayList[] 变量名 = new 数据类型[长度];
集合:
Array List<数据类型> 变量名 = new ArrayList<数据类型>();
数组与集合的区别:
数组的长度是固定的
集合的长度是可变的
集合中的元素是引用类型,如果想写基本类型要用对应的包装类
Collection 常用的方法
1.add 添加
2.remove 删除
3.contains 判断是否包含某个元素
4.clear清空集合
5.size元素的大小
6.isEmpty判断是否为空
7.toArray将集合转换为数组
8.Iterator迭代器
package com.itheima.Text01;
import java.util.ArrayList;
public class Text02 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("Java");
list.add("PHP");
list.add("C");
list.add("C#");
list.add("IOS");
System.out.println(list);
list.remove("PHP");
System.out.println(list);
boolean java = list.contains("Java");
System.out.println(java);
String remove = list.remove(0);
System.out.println(list);
int size = list.size();
System.out.println(size);
boolean empty = list.isEmpty();
System.out.println(empty);
Object[] objects = list.toArray();
for (Object object : objects) {
System.out.println(object);
}
list.clear();
System.out.println(list);
}
}
Iterator
迭代器,用于遍历集合的
调用迭代器的对象。hasNext
调用迭代器对象。next
ArrayList<String> list = new ArrayList<>();
list.add("Java");
list.add("PHP");
list.add("C");
list.add("C#");
list.add("IOS");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
注意事项:
循环时不能对元素进行操作
增强for时迭代器iterator的语法糖
增强for内部使用的是迭代器原理
ArrayList<String> list = new ArrayList<>();
list.add("Java");
list.add("PHP");
list.add("C");
list.add("C#");
list.add("IOS");
for (String s : list) {
System.out.println(s);
}
2.数据结构
2.1栈结构
先进后出
2.2队列结构
特点:先进先出
2.3数组结构
查询快,增删慢
2.4链表结构
查询慢,增删快
树结构—>二叉树—> 二叉查找树 —> 平衡树二叉 —> 红黑树
3 泛型1.5新特性
优点:
避免向下转型的麻烦
将运行时期异常转换为编译时期异常
泛型可以定义在类上,方法上,接口上
定义在类上
package com.itheima.Text02;
public class MyArrayList<E> {
private E e;
public E getE() {
return e;
}
public void setE(E e) {
this.e = e;
}
}
package com.itheima.Text02;
public class Text01_MyArrayList {
public static void main(String[] args) {
MyArrayList<String> arr = new MyArrayList<>();
arr.setE("java");
String e = arr.getE();
System.out.println(e);
}
}
泛型方法
package com.itheima.Text02;
public class Dog {
public <E> void show(E number) {
System.out.println(number);
}
}
package com.itheima.Text02;
public class TextDog {
public static void main(String[] args) {
Dog dog = new Dog();
dog.show("java");
dog.show(12);
dog.<String>show("asdfgh");
}
}
泛型定义在接口上
package com.itheima.Text02;
public interface MyInterface<E> {
public abstract void show(E e);
}
开发中很少自定义泛型,一般为用别人定义好的泛型