集合Collection->List->ArrayList

  • 数组:存储多个对象
  • 弊端:数组长度不可变 内容可变
  • 实际开发中需要一个能够随时改变的数组
  • ->集合Collection
  • Collection 抽象接口 定义集合相关操作
  • --->List接口 列表 数组 特点:有序 可重复
  • ------->ArrayList
  • ------->LinkedArrayList
  • --> Set “集合” 特点:无序 不重复
  • ------->HashSet
  • Map接口 映射关系 Key-Value 键值对 键不能相同 值可以相同
  • HashMap
  • 集合的元素个数是可变的
  • 操作:添加元素 add addAll
  • 删除元素
  • 插入元素
  • 访问元素

Collection接口的方法

Collection<String> list=new ArrayList();
添加一个对象

list.add("java");
list.add("android");
System.out.println(list);

删除一个对象

list.remove("java");
System.out.println(list);

获取元素个数

int a=list.size()
System.out.println(a);

判断是否包含一个元素

if (list.contains("ja"))
{
System.out.println("包含");
}else{
System.out.println("不包含");
}

判断是否为空

if (list.isEmpty())
{
System.out.println("为空");
}

判断两个集合是否相同 (比较集合的内容)

添加一个对象
Collection<String> list1=new ArrayList();
list1.add("java");
list1.add("android");
if(list.equals(list1))
{
System.out.println("相同");
}
else{ System.out.println("不相同");
}

清空

list.clear();

集合的遍历

  • hasnext 判断是否有元素
  • next 获取下一个对象
  • remove 删除当前遍历后的对象
  • 定义遍历器 Iterator
  • Iterator iterator =list1.iterator();

第一种遍历方式 使用Iterator
while (iterator.hasNext())
{
System.out.println(iterator.next());
}
第二种 for-each 增强for循环 快速循环
for (String obj:list1)
{
System.out.println(obj);
}
第三种
for (int i=0;i<list1.size();i++)
{
System.out.println();
}

  • List接口 extends Collection
  • ArrayList 优点:访问方便 缺点:插入 删除 不方便
  • LinkedArrayList 优点: 插入 删除 方便
  • 集合里面只能存放对象
  • byte char int long float double boolean
  • 包装类
  • Byte Char Integer Long Float Double Boolean
  • 自动的将基本数据类型包装为对应的类
使用ArrayList 创建数组

ArrayList<Integer>score =new ArrayList<>();

添加数据

score.add(2);
score.add(3);
score.add(1,5);
System.out.println(score);

访问指定元素

score.get(2);

修改一个元素

score.set(0,0);
System.out.println(score);

删除指定位置的数据

score.remove(0);
System.out.println(score);

删除具体的数据

score.remove((Integer) 5);
System.out.println(score);
score.clear();
System.out.println(score);

添加一个集合

ArrayList<Integer> a2=new ArrayList<>();
a2.add(1);
a2.add(2);
a2.add(3);
a2.add(4);
score.addAll(a2);
System.out.println(score);

取交集retainAll
删除交集 removeAll

ArrayList<Integer> a3=new ArrayList<>();
a3.add(1);
a3.add(2);
score.retainAll(a3);
System.out.println(score);

访问某个<<对象在集合里面的索引位置

ArrayList<Integer> a4=new ArrayList<>();
a4.add(1);
a4.add(2);
a4.add(3);
a4.add(1);
System.out.println(a4.indexOf(1));//第一次出现的位置
System.out.println(a4.lastIndexOf(1));//最后一次出现的位置

将ArrayList 转化为普通数组

Integer[] objects=new Integer[a4.size()];
a4.toArray(objects);
for (Integer i:objects)
{
System.out.println(i);
}

获取集合某个范围的子集合

List<Integer> integers=a4.subList(1,3);
System.out.println(integers);

删除某个范围的对象

ArrayList<Integer>nums=new ArrayList<>();
nums.add(2);
nums.add(2);
nums.add(3);
nums.add(4);
for (int i=0;i<nums.size();i++)
{
int ab=nums.get(i);
if (ab%2==0)
{
nums.remove(nums.get(i));
i--;
}
}
System.out.println(nums);

1.定义一个类实现接口

ArrayClass ac=new ArrayClass();
int[] num={1,2,3,4,5,6,7};
absClass bc=new absClass();
ac.test(num,bc);

使用匿名类

ArrayClass ac=new ArrayClass();
int[] num={1,2,3,4,5,6,7};
ac.test(num, new Show() {
@Override
public void customShow(int element) {
System.out.println(element);
}
});

使用Lambda表达式
  • 如果参数是一个接口类对象,且接口里面只有一个方法
  • 可以省略方法名

ArrayClass ac=new ArrayClass();
int[] num={1,2,3,4,5,6,7};
ac.test(num,(int element)->{
System.out.println(element);
});

  • 闭包enclusure 把函数作为一个方法的参数
class ArrayClass
{
    public void test (int [] target,Show s){
        for (int element:target)
        {
            s.customShow(element);
        }

    }
}

* 必须是接口  这个接口里面只有一个方法


 interface Show
 {
    void customShow(int element);
 }
 class  absClass implements Show
 {

    @Override
    public void customShow(int element) {
        System.out.println(element);
    }
}

感悟:1.今天学习的东西,总的来说不难,就是有的东西比较绕,需要仔细理解。
2.对于我个人来说,在边听课的时候边打代码,有的时候听的不是很仔细,讲完了,一些细节不知道,就成了阻碍。
3.对于Java来说,我感觉学的东西很多,但是对于它还缺一个整体的布局了解,对于Java,有哪些部分,每个部分有哪些知识,我都不知道,只知道学了一大堆东西,但是却没有形成自己的知识体系。每个具体的知识的运用知道,但是如果让我写一个程序,我无法第一时间想到这个程序如何写,又用到哪些知识,而这就是因为知识体系没有建立。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容