集合框架

List接口下的集合特点: Set接口下的集合特点:

1.都是有序的 1.都是无序的 2.都有下标 2.没有下标

3.都可以重复 3.不可重复(覆盖)

List接口下的集合

1.ArrayList

  ArrayList  list = new ArrayList();//长度可加,但加了也是0
//集合的长度 size() 数组的长度 数组名.length 是一个属性 字符串长度 名.length() 是一种方法
//集合的长度在初始化的时候为0,当添加第一个数据的时候,会给一个默认的长度10,当添加的数据超过了10个,长度(10转换为2进制)会向右移动一位。长度也有一个最大值!
System.out.println(list.size()) //0
 //添加,可以添加重复的数据,也可以添加null,且会占用长度
list.add(111);
list.add(22.2);
list.add(true);
list.add("aaa");
list.add('v');
list.add(null);
//按指定位置添加:list.add(index,添加的数据) 注意:index不能超出原集合的最大长度
list.add(2,333)
//通过下标来获取集合中的每个值: list.get(下标)
   for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//集合的删除
//针对非int类型
list.remove("aaa");
System.out.println("==================" + list.size());
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//删除int类型的值,必须使用封装类
list.remove(new Integer(111));
System.out.println("=======================" + list.size());
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//集合的修改
//list.set(下标,新的值)
list.set(0, 222);
System.out.println("====================" + list.size());
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//查找集合中的某个值indexOf,lastIndexOf 返回指定数据第一次被查找到在集合中的下标
//如果没有找到返回-1
System.out.println(list.lastIndexOf("aaa"));
System.out.println(list.lastIndexOf(null));
//查找集合中是否有某个值,找到返回true,否则false
System.out.println(list.contains(null)); //判断集合是否为空
System.out.println(list.isEmpty());
System.out.println(list.size());
//清空集合中所有的元素
list.clear();
System.out.println(list.size());    

2.Vector

和ArrayList差不多,但已经不用了。

Vector 和ArrayList的区别:

1.ArrayList中的方法和实现和Vector基本一样,底层都是数组的实现。

2.Vector中的方法都是线程安全的,ArrayList没有考虑线程问题。

3.ArrayList在一些算法上做了优化,提高了效率。

3.Stack

和Vector差不多,也已经不用了。

4.LinkList

  LinkedList linkedList = new LinkedList();
linkedList.add("aaa");
linkedList.add("bbb");
linkedList.add("ccc"); linkedList.remove("ccc"); for (int i = 0; i < linkedList.size() ; i++) {
System.out.println(linkedList.get(i));
}
linkedList.addFirst("ffff");
linkedList.removeLast();

LinkList 和ArrayList的区别:

1.ArrayList底层是数组的实现,LinkedList底层是链表的实现 ​ 1.1 在java中链表就是自己实现了一个类,在类中记录了前一个和后一个的地址 ​ 每次查找都需要找到前一个或者后一个才能往前或者往后找到 2.ArrayList查找速度快,但是删除和插入的速度慢 3.LinkedList删除和插入的速度快,但是查询速度较慢 4.LinkedList有自己独有的addFirst addLast removeLast removeFirst的方法

链表:

在java中链表就是自己实现了一个类,在类中记录了前一个和后一个的地址

List接口下的集合的更多相关文章

  1. Map接口下的集合和泛型理解

    一.Map接口 1. Map接口就是最顶层了,上面没有继承了.Map是一个容器接口,它与前面学的List.Set容器不同的是前面学的这些容器,一次只能传入一个元素,但是Map容器一次可以传入一对元素( ...

  2. Set接口下的集合

    一.集合(定义字段的时候统一使用包装类) 1.集合大类分为List.Set.Map三种,其中,List集合是有序可重复的,并且可以使用普通for循环.增强for循环.正向迭代器.双向迭代器:Set集合 ...

  3. C# 通过IEnumberable接口和IEnumerator接口实现自定义集合类型foreach功能

    1.IEnumerator和IEnumerable的作用 其实IEnumerator和IEnumerable的作用很简单,就是让除数组和集合之外的类型也能支持foreach循环,至于foreach循环 ...

  4. .net 下的集合

    集合的操作在编码的时候很常见.但是由于经常使用几种集合.而忽略了一些不常用的集合.在这里我整理下. 首先先了解下接口: 1.IEnumerable,返回一个循环访问集合的枚举器. 2.IEnumera ...

  5. 容器之List接口下各实现类(Vector,ArrayList 和LinkedList)的线程安全问题

    Vector .ArrayList 和LinkedList都是List接口下的实现类,但是他们之间的区别和联系是什么呢? 首先: 然后: 如果您仅仅想知道结论,那么可以关闭了. 下面我讨论讨论为什么. ...

  6. IIC接口下的24C02 驱动分析

    本节来学习IIC接口下的24C02 驱动分析,本节学完后,再来学习Linux下如何使用IIC操作24C02 1.I2C通信介绍 它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据,是一个多 ...

  7. [知了堂学习笔记]_集合接口list与集合接口set的区别

    在Java中 除了 Map以外的集合的根接口都是Collection接口,而在Collection接口的子接口中,最重要的莫过于List和Set集合接口. 今天我们就来谈谈List集合接口与Set集合 ...

  8. C++下实现同接口下多个类作为参数的调用和传参

    /* 实现同接口下不同类的对象的转移 定义类的接口 定义多个继承该接口的类 定义管理类,把接口当作类型, 传入该接口下各种类的对象,进行操作 */ #include<iostream> # ...

  9. 集合接口list与集合接口set的区别

    在Java中 除了 Map以外的集合的根接口都是Collection接口,而在Collection接口的子接口中,最重要的莫过于List和Set集合接口. 今天我们就来谈谈List集合接口与Set集合 ...

随机推荐

  1. JS 接口定义及实现的例子

    //定义一个函数,目的是将参数中的第二个函数所有属性放到第一个参数中,目的是将接口中所有方法放到实现类中 Object.extend=function(destination,source){ for ...

  2. 最新JetBrains PyCharm 使用教程--下载安装Python库(五)

    最新JetBrains PyCharm 下载安装Python库 ​

  3. LINQ学习——JOIN

    一.JOIN的作用 1.使用联接来结合两个或更多的集合的数据. 2.联接操作接受两个集合然后创建一个临时的对象集合,每一个对象包含原始集合对象中的所有字段. Note:这里是包含而不是这个原实集合的字 ...

  4. PHP更新用户微信信息的方法

    PHP更新用户微信信息的方法 大家都知道 授权登录一次 获取后 再登录就会提示已经授权登录 就没办法重新获得用户信息了 这个时候根据openid来获取了请求user/info这个获取ps:必须关注过公 ...

  5. Jenkins+pipeline+参数构建+人工干预确定

    Jenkins+pipeline+参数构建+人工干预 实现了以下功能 1. 可以选择环境,单选:可以选择需要发布的项目,多选 2.发布过程可视化 3. 可以人工干预是否继续发布. 初始化配置需要很久, ...

  6. tensorflow中的学习率调整策略

    通常为了模型能更好的收敛,随着训练的进行,希望能够减小学习率,以使得模型能够更好地收敛,找到loss最低的那个点. tensorflow中提供了多种学习率的调整方式.在https://www.tens ...

  7. python的模块future用法实例解析

    计算机的知识太多了,很多东西就是一个使用过程中详细积累的过程.最近遇到了一个很久关于future的问题,踩了坑,这里就做个笔记,免得后续再犯类似错误.   future的作用:把下一个新版本的特性导入 ...

  8. HTML5之worker开启JS多线程模式及window.postMessage跨域

    worker概述 worker基本使用 window下的postMessage worker多线程的应用 一.worker概述 web worker实际上是开启js异步执行的一种方式.在html5之前 ...

  9. 移动端自动化测试Appium环境搭建(part1-2-3)

    Appium移动端自动化测试相信大家都不陌生,appium的铁哥们是selenium,不管是selenium还是appium,都是调用webdriver来做自动化测试.今天关于appium的介绍我们不 ...

  10. 检测当前IE浏览器的版本

    检测当前IE浏览器的版本(注意:在非IE浏览器中是看不到效果的) 使用示例如下:低于IE8弹窗提示 <!--[if lte IE 8]><script>alert('您当前浏览 ...