Java学习笔记-2
集合ArrayList
1.长度可变化
2.泛型,集合中全部元素为同一类型,泛型只能是引用类型(例如类的对象),不能是基本类型(可以是String,不能说int这些,因为集合中存储的是地址值,而基本数据类型没有地址值)。要装基本类型就需要使用对应的包装类,除了int对应Integer,char对应Character,其它都是基本类型的首字母大写即可
ArrayList<String> list = new ArrayList<>();
3.直接打印得到的是内容(无内容打印中括号)而不是地址值(其它非基本类型直接打印一般为地址值,ArrayList重写了toString方法)
4.添加内容使用add,注意添加内容类型必须与声明的泛型相同,返回值为添加成功与否的布尔值
5.读取/删除使用get和remove方法,参数为索引值
6.size方法获取集合长度,为包含的元素个数
7.集合作为方法的参数或返回值都是以地址值传送
匿名内部类
1.如果接口的实现类或者父类的子类只需用到一次,就可以省略类的定义
接口名 对象名 = new 接口名(){
@Override
实现接口的抽象方法
}
//这样写的效果等同于单独创建一个类通过implements使用接口来做接口实现
2.直接new 接口名,在大括号后直接调用实现的方法即匿名对象
new MyInterface(){
@Override
public void mth(){
System.out.println("匿名对象调用方法!");
}
}.mth();
Collection
Collection<String> coll = new ArrayList<>();
//多态性
一、List接口(有序;允许重复;有索引值-可用for遍历)
- Vector集合
- ArrayList集合(底层为数组,查询快,增删慢)
- LinkedList集合(底层为链表,查询慢,增删快)
二、Set接口(无序;不允许重复;无索引值)
- TreeSet集合(底层为二叉树,用于排序)
- HashSet集合(底层为哈希表+红黑树,存取无序)
1)LinkedHashSet集合(底层为哈希表+链表,存取有序)
三、所有单列集合有共性的方法
- add,remove,clear,isEmpty
- contains判断集合中是否包含某个元素,返回布尔值
- toArray集合转数组
package day1;
import java.util.ArrayList;
import java.util.Random;
public class day1 {
//题目4
public static ArrayList<Integer> smallList(ArrayList<Integer> list)
{
ArrayList<Integer> smallList = new ArrayList<>();
for (int i = 0; i < list.size(); i++)
{
if (list.get(i) % 2 == 0)
{
smallList.add(list.get(i));
}
}
return smallList;
}
public static void main(String[] args) {
//基本语法
// ArrayList<String> list = new ArrayList<>();
// list.add("A");
// System.out.println(list);
// String first = list.get(0);
// list.remove(0);
// System.out.println(first);
// System.out.println(list);
// System.out.println(list.size());
// list.add(("B"));
// System.out.println(list.size());
ArrayList<Integer> list = new ArrayList<>();
for(int i = 0; i < 20; i++)
{
Random random = new Random();
int x = random.nextInt(100);
list.add(x);
}
for (int i = 0; i < list.size(); i++)
{
System.out.print(list.get(i) + " ");
}
System.out.println();
ArrayList<Integer> small = smallList(list);
for (int i = 0; i < small.size(); i++)
{
System.out.print(small.get(i) + " ");
}
System.out.println();
System.out.println();
//匿名内部类实现抽象方法
MyInterface itf = new MyInterface() {
@Override
public void mth() {
System.out.println("方法已由匿名内部类实现!");
}
};
itf.mth();
//匿名对象
new MyInterface(){
@Override
public void mth(){
System.out.println("匿名对象调用方法!");
}
}.mth();
System.out.println();
}
}