当前位置: 首页 > news >正文

可靠的广州做网站/微信crm

可靠的广州做网站,微信crm,怎么创建个人视频号,微网站开发需要几个人本帖最后由 小鲁哥哥 于 2016-9-18 16:56 编辑【济南中心】JAVA编程阶梯:基础篇之第十五章集合框架集合的由来数组长度是固定,当添加的元素超过了数组的长度时需要对数组重新定义,太麻烦,java内部给我们提供了集合类,能存储任意对象,长度是可以改变的,随着元素的增加…

本帖最后由 小鲁哥哥 于 2016-9-18 16:56 编辑

【济南中心】JAVA编程阶梯:基础篇之第十五章

集合框架

集合的由来

数组长度是固定,当添加的元素超过了数组的长度时需要对数组重新定义,太麻烦,java内部给我们提供了集合类,能存储任意对象,长度是可以改变的,随着元素的增加而增加,随着元素的减少而减少。

集合类的特点

集合只能存储对象,//jdk1.5版本后可以存基本数据类型,自动装箱为基本数据类型包装类。

集合的长度是可变的

集合可以存储不同类型的对象

数组和集合的区别

区别1 :

数组既可以存储基本数据类型,又可以存储引用数据类型,基本数据类型存储的是值,引用数据类型存储的是地址值

集合只能存储引用数据类型(对象)集合中也可以存储基本数据类型,但是在存储的时候会自动装箱变成对象

区别2:

数组长度是固定的,不能自动增长

集合的长度的是可变的,可以根据元素的增加而增长

数组和集合什么时候用

1,如果元素个数是固定的推荐用数组

2,如果元素个数不是固定的推荐用集合

集合继承体系图

b5b0b1954d7b1b86a4242bbd9d0c05eb.gif

集合类的关系图.png (207.63 KB, 下载次数: 12)

2016-9-18 10:53 上传

Collection集合的基本功能a)添加:

i.  boolean add(E e)                  添加元素e

j.  boolean addAll(Collection c) 将集合c中的所有元素添加到当前集合

b)删除:

i.  void clear():清空容器

j.  boolean remove(Objec object):    移除一个元素

k.  boolean removeAll(Collection c): 移除与c所有的相同元素//retainall(Collection c)  保留与c相同的元素

c)判断:

i.  boolean contains(Object object):判断是否包含此元素

j.  boolean containsAll(Collection c):判断是否包含一堆元素

k.  boolean equals(Object object):比较此collection与指定对象是否相等

m.  boolean isEmpty():判断是否集合为空

d)获取:

h.  Iterator iterator():取出

i.  int hashCode():返回此collection的哈希值

j.  int size():返回此collection中元素的个数

k.  boolean retainAll(Collection c):取交集

m.  Object toArray():返回此collection中所有元素的数组

n.  T[] toArray(T[] a):返回包含此collection中所有元素的数值

集合的遍历之集合转数组遍历

[Java] 纯文本查看 复制代码package com.itcast;

import java.util.ArrayList;

import java.util.Collection;

/**

* toArray()遍历集合

*

* @author Somnus

*

*/

public class Demo {

public static void main(String[] args) {

Collection coll = new ArrayList();

coll.add(new People("小明", 23)); // Object obj = new Student("张三",23);

coll.add(new People("小红", 24));

coll.add(new People("小王", 25));

coll.add(new People("小李", 26));

Object[] arr = coll.toArray(); // 将集合转换成数组

for (int i = 0; i < arr.length; i++) {

People s = (People) arr[i]; // 强转成Student

System.out.println(s.getName() + "," + s.getAge());

}

}

}

class People {

private String name;

private int age;

public People() {

}

public People(String name, int age) {

super();

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

集合的遍历之迭代器遍历(集合的专用遍历方式)

[Java] 纯文本查看 复制代码package com.itcast;

import java.util.ArrayList;

import java.util.Collection;

import java.util.Iterator;

/**

* Iterator遍历集合

*

* @author Somnus

*

*/

public class Demo {

public static void main(String[] args) {

Collection coll = new ArrayList();

coll.add(new People("小明", 23));

coll.add(new People("小红", 24));

coll.add(new People("小王", 25));

coll.add(new People("小李", 26));

System.out.println("-----------第一种使用方式---------------");

Iterator it = coll.iterator(); // 获取迭代器

while (it.hasNext()) { // 判断集合中是否有元素

People s = (People) it.next(); // 向下转型

System.out.println(s.getName() + "," + s.getAge()); // 获取对象中的姓名和年龄

}

System.out.println("-----------第二种使用方式---------------");

for (Iterator ite = coll.iterator(); ite.hasNext();) {

People s = (People) ite.next(); // 向下转型

System.out.println(s.getName() + "," + s.getAge()); // 获取对象中的姓名和年龄

}

}

}

class People {

private String name;

private int age;

public People() {

}

public People(String name, int age) {

super();

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

迭代器

(1)迭代器就是取出集合元素的方式

(2)迭代器的作用

因为每个集合中元素的取出方式都不一样,于是就把元素的取出方式进行抽取,并定义在集合内部,

这样取出方式就可以直接访问集合内部的元素;

而每个容器的数据结构不同,所以取出动作的细节也不一样,但是有共性内容:判断和取出。

那么就将共性内容进行抽取,从而形成了接口Iterater

(3)获取迭代器的方法:

Iterator iterator() 返回在此 collection 的元素上进行迭代的迭代器。

Iterator iterator() 返回在此 set 中的元素上进行迭代的迭代器。

(3)迭代器方法:

boolean hasNext() 如果仍有元素可以迭代,则返回 true。

E next() 返回迭代的下一个元素。

void remove() 从迭代器指向的collection中移除迭代器返回的最后一个元素(可选操作)。

List集合概述

List接口是Collection接口的一个子接口。

List接口中的元素有如下特点(对角标的操作都是特有方法,因为有序:

A:元素有序(存储顺序和取出顺序一致)

B:元素可以重复

List接口中的特有方法

A:add(int index,Object obj):在指定位置加入元素

B:remove(int index):移除指定位置的元素

C:set(int index,Object obj):修改指定位置的元素

D:get(int index):获取指定位置的元素

E:indexOf(Object obj):获取指定元素的位置

F:subList(int start,int end):从一个大的List中截取一个小的List

G:listIterator():返回一个List接口特有的迭代器

List集合通过size()和get()方法结合遍历

[Java] 纯文本查看 复制代码/**[/align] * 通过size()和get()方法结合遍历集合

*

* @author Somnus

*

*/

public class Demo {

public static void main(String[] args) {

List list = new ArrayList<>();

list.add(new People("张三", 18));

list.add(new People("李四", 18));

list.add(new People("王五", 18));

list.add(new People("赵六", 18));

for (int i = 0; i < list.size(); i++) {

People s = (People) list.get(i);

System.out.println(s.getName() + "," + s.getAge());

}

}

}

class People {

private String name;

private int age;

public People() {

}

public People(String name, int age) {

super();

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

集合框架并发修改异常产生的原因及解决方案

[Java] 纯文本查看 复制代码/**[/align] * 需求:判断集合里面有没有"孙先生",如果有当找到"孙先生"的时候添加一个"吴女士",请写代码实现。

*

* @author Somnus

*/

public class Demo {

public static void main(String[] args) {

List list = new ArrayList();

list.add(new People("赵先生", 19));

list.add(new People("钱先生", 19));

list.add(new People("孙先生", 19));

list.add(new People("李先生", 19));

list.add(new People("周先生", 19));

// Iterator it = list.iterator();

// while (it.hasNext()) {

// People p = (People) it.next();

// if (p.getName().equals("孙先生")) {

// list.add(new People("吴女士", 19)); //

// 这里会抛出ConcurrentModificationException并发修改异常

// }

// }

// 在迭代时,不可以通过集合对象的方法操作集合中的元素,因为会发生ConcurrentModificationException(当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常)

// 解决方案

// a:迭代器迭代元素,迭代器修改元素(ListIterator的特有功能add)

// b:集合遍历元素,集合修改元素

ListIterator lit = list.listIterator(); // 如果想在遍历的过程中添加元素,可以用ListIterator中的add方法

while (lit.hasNext()) {

People p = (People) lit.next();

if (p.getName().equals("孙先生")) {

lit.add(new People("吴女士", 20));

}

}

}

}

class People {

private String name;

private int age;

public People() {

}

public People(String name, int age) {

super();

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

ListIterator:列表迭代器

Iterator方法有限,只能对元素进行判断、取出和删除的操作

ListIterator可以对元素进行添加和修改动作等。

获取列表迭代器方法:

ListIterator listIterator() 返回此列表元素的列表迭代器(按适当顺序)。

ListIterator listIterator(int index)

返回此列表中的元素的列表迭代器(按适当顺序),从列表中指定位置开始。

列表迭代器方法:

void add(E e) 将指定的元素插入列表(可选操作)。

boolean hasPrevious()  如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。

int nextIndex() 返回对 next 的后续调用所返回元素的索引。

E previous() 返回列表中的前一个元素。

int previousIndex() 返回对 previous 的后续调用所返回元素的索引。void set(E e) 用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)。

Vector类概述Vector(JDK1.0):底层数据结构是数组数据结构.特点是查询和增删速度都很慢。

默认长度是10,当超过长度时,按100%延长集合长度。

线程同步。

Vector功能跟ArrayList功能一模一样,已被ArrayList替代)

Vector类特有功能

public void addElement(E obj)

public E elementAt(int index)

public Enumeration elements()

Vector的迭代

[Java] 纯文本查看 复制代码/**

* Vector迭代

*

* @author Somnus

*/

public class Demo {

public static void main(String[] args) {

Vector v = new Vector(); // 创建集合对象,List的子类

v.addElement("a");

v.addElement("b");

v.addElement("c");

v.addElement("d");

// Vector迭代

Enumeration en = v.elements(); // 获取枚举

while (en.hasMoreElements()) { // 判断集合中是否有元素

System.out.println(en.nextElement());// 获取集合中的元素

}

}

}

数据结构之数组和链表

数组的特点:

1.查询快修改也快

2.增删慢

链表的特点:

1.查询慢,修改也慢

2.增删快

List的三个子类

ArrayList:

底层数据结构是数组,查询快,增删慢。

线程不安全,效率高。

Vector:

底层数据结构是数组,查询快,增删慢。

线程安全,效率低。

Vector相对ArrayList查询慢(线程安全的)

Vector相对LinkedList增删慢(数组结构)

LinkedList:

底层数据结构是链表,查询慢,增删快。

线程不安全,效率高。

Vector和ArrayList的区别

Vector是线程安全的,效率低

ArrayList是线程不安全的,效率高

共同点:都是数组实现的

ArrayList和LinkedList的区别

ArrayList底层是数组结果,查询和修改快

LinkedList底层是链表结构的,增和删比较快,查询和修改比较慢

共同点:都是线程不安全的

List的三个子类分别都是什么时候用?

查询多用ArrayList

增删多用LinkedList

如果都多ArrayList

forum.php?mod=viewthread&tid=326853&page=1&extra=

b5b0b1954d7b1b86a4242bbd9d0c05eb.gif

锦绣齐鲁.jpg (76.78 KB, 下载次数: 10)

2016-9-18 16:23 上传

http://www.jmfq.cn/news/5136895.html

相关文章:

  • 深圳网站建设公司推荐/求老哥给几个靠谱的网站
  • 免费ppt模板下载大全 完整版无需会员/网站关键词搜索排名优化
  • 厦门 网站备案/百度指数怎么下载
  • joomla建站教程/湖南企业竞价优化
  • 我想出租做房 请问哪个网站好些/seo专业培训学费多少钱
  • 做网站效果图/哈尔滨seo公司
  • 中国建设官方网站登录/厦门百度竞价推广
  • wordpress可以做门户网站/百度快速收录权限域名
  • 怎么做网站规划书/嘉兴seo计费管理
  • 国外的一些网站/互联网去哪里学
  • 新闻网站如何做推广/网站优化内容
  • 网站首页优化/seo和sem的区别是什么
  • 信誉好的营销网站建设/三只松鼠搜索引擎营销案例
  • 个人做啥网站流量大/nba最新排行
  • 以前的网站忘了怎么办啊/app推广
  • 门头沟网站建设/seo咨询常德
  • 网站建网站建设专业/百度地址
  • 网站后台建设公司/企业管理培训班哪个好
  • 怎么用joomla做网站/百度云盘搜索引擎入口
  • 门户网站建设的特点/网站测试报告
  • 聊城网站建设培训班/手机百度app下载
  • 做建网站的公司/建设网站费用
  • 西安公司网站建设哪家专业/关键词排名怎么做上去
  • 找最新游戏做视频网站有哪些/成都seo招聘
  • app开发公司 无冬/宁波seo网站服务
  • 西安做网站价格/优化网站
  • 查看最新疫情石家庄/网络seo推广培训
  • 个人网站导航模版/18款禁用网站app直播
  • 好的域名 org 网站/sem优化是什么
  • 网站建设过程中的通用原则/个人网站的制作模板