JAVASE02-Unit04: 集合框架 、 集合操作 —— 线性表
Unit04: 集合框架 、 集合操作 —— 线性表
操作集合元素相关方法
package day04; import java.util.ArrayList;
import java.util.Collection; import day02.Point; /**
* 操作集合元素相关方法
* @author adminitartor
*
*/
public class Collection_Remove {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add(new Point(1,2));
c.add(new Point(3,4));
c.add(new Point(5,6));
c.add(new Point(1,2)); System.out.println(c); Point p = new Point(1,2);
/*
* boolean remove(E e)
* 从集合中删除给定元素
* 将给定元素与集合现有元素顺序进行equals
* 比较,并删除第一个与之比较为true的元素
* 若成功删除元素则返回true
*/
c.remove(p);
System.out.println(c);
}
}
Collection_Remove.java
集合操作
package day04; import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet; /**
* 集合操作
* @author adminitartor
*
*/
public class Collection_Methods {
public static void main(String[] args) {
Collection c1 = new ArrayList();
c1.add("java");
c1.add("c++");
c1.add("c#"); Collection c2 = new HashSet();
c2.add("android");
c2.add("ios");
c2.add("java");
/*
* boolean addAll(Collection c)
* 将给定集合中的所有元素添加到当前集合
* 中,方法调用完毕后当前集合元素发生了
* 变化,则返回true
*/
c1.addAll(c2);
System.out.println(c1); Collection c3 = new ArrayList();
c3.add("android");
c3.add("c#");
// c3.add("php");
/*
* boolean containsAll(Collection c)
* 判断当前集合是否包含给定集合中的所有
* 元素
*/
boolean contains = c1.containsAll(c3);
System.out.println("全包含:"+contains); /*
* 删除当前集合中与给定集合共有元素
*/
c1.removeAll(c3);
System.out.println(c1);
}
}
Collection_Methods.java
遍历集合
package day04; import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator; /**
* 遍历集合
* 集合提供了通用的遍历元素方式:迭代器模式。
* 迭代器java.util.Iterator是一个接口。
* 不同的集合实现类都提供了一个可以遍历自身元素的
* 迭代器实现类,我们无需记住每个迭代器实现类的名字
* 只要当Iterator看待可以操作并遍历集合元素即可。
*
* 迭代器遍历集合元素遵循:
* 问,取,删 的步骤
* 其中删除元素操作不是必要操作。
* @author adminitartor
*
*/
public class Collection_Iterator {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add("one");
c.add("#");
c.add("two");
c.add("#");
c.add("three");
c.add("#");
c.add("four");
c.add("#");
c.add("five");
System.out.println(c); //获取用于遍历该集合元素的迭代器
Iterator it = c.iterator();
/*
* boolean hasNext()
* 判断集合是否还有元素可以取出
*/
while(it.hasNext()){
/*
* E next()
* 取出下一个元素
*/
String str = (String)it.next();
if("#".equals(str)){
/*
* 在使用迭代器遍历集合元素时,
* 不要通过集合的方法修改元素数量,
* 否则会抛出异常
*/
// c.remove(str);
/*
* 迭代器的remove方法可以将刚
* 通过next方法取出的元素从集合
* 中删除。
*/
it.remove();
}
System.out.println(str);
} System.out.println(c);
}
}
Collection_Iterator.java
增强for循环
package day04;
/**
* 增强for循环
* 也称为新循环,for each
* JDK1.5之后推出的新特性
* 新循环不能替代传统循环的工作,新循环使用来遍历
* 集合或数组的
* @author adminitartor
*
*/
public class NewFor_Array {
public static void main(String[] args) {
String[] array = {"one","two","three","four","five"}; for(int i=0;i<array.length;i++){
String str = array[i];
System.out.println(str);
} for(String str : array){
System.out.println(str);
}
}
}
NewFor_Array.java
使用新循环遍历集合
package day04; import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator; /**
* 使用新循环遍历集合
* @author adminitartor
*
*/
public class NewFor_Collection {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add("one");
c.add("two");
c.add("three");
c.add("four");
c.add("five");
/*
* 新循环并非新的语法,JVM并不认可新循环
* 而是编译器认可。
* 编译器在编译源程序时,会将新循环遍历
* 集合改为使用迭代器遍历。
* 为此,新循环在遍历集合时,不能通过集合
* 的方法修改元素数量。
*/
for(Object o : c){
// Iterator it = c.iterator();
// while(it.hasNext()){
// Object o = it.next();
String str = (String)o;
System.out.println(str);
}
}
}
NewFor_Collection.java
测试泛型的使用
package day04;
/**
* 测试泛型的使用
* @author adminitartor
*
*/
public class TestPoint {
public static void main(String[] args) {
Point<Integer> p1
= new Point<Integer>(1,2);
p1.setX(2);
int x1 = p1.getX();
System.out.println("x1:"+x1); Point<Double> p2
= new Point<Double>(1.1,2.2);
p2.setX(2.2);
double x2 = p2.getX();
System.out.println("x2:"+x2); Point<String> p3
= new Point<String>("一","二");
p3.setX("二");
String x3 = p3.getX();
System.out.println("x3:"+x3); }
}
TestPoint.java
泛型 JDK1.5之后推出的新特性
package day04;
/**
* 泛型 JDK1.5之后推出的新特性
* @author adminitartor
*
*/
public class Point<T> {
private T x;
private T y;
public Point(T x, T y) {
super();
this.x = x;
this.y = y;
}
public T getX() {
return x;
}
public void setX(T x) {
this.x = x;
}
public T getY() {
return y;
}
public void setY(T y) {
this.y = y;
} @Override
public String toString() {
return "("+x+","+y+")";
}
}
Point.java
泛型并非虚拟机认可,而是编译器认可,泛型的原型就是Object。
package day04;
/**
* 泛型并非虚拟机认可,而是编译器认可
* 泛型的原型就是Object。所以,Point中所有<T>的地方
* 会被编译器改为Object
* 编译器在检查使用泛型的地方时做如下操作:
* 在给一个泛型赋值时,检查实际的值是否满足类型要求
* 获取一个泛型的值时,会自动添加类型转换代码
* @author adminitartor
*
*/
public class TestPoint2 {
public static void main(String[] args) {
/*
* Point里面的x,y实际是Object
* 由于有泛型,编译器会检查构造方法中
* 实际传入的值是否符合Integer的类型,
* 不符合编译不通过
*/
Point<Integer> p1
= new Point<Integer>(1,2); p1.setX(2);
/*
* 编译后的class文件中编译器会补上向下
* 造型的代码:
* int x1 = (Integer)p1.getX();
*/
int x1 = p1.getX();
System.out.println("x1:"+x1);
/*
* 不指定泛型的实际类型那么则使用默认
* 的Object
*/
Point p2 = p1;
p2.setX("二");
System.out.println("x2:"+p2.getX());//"二" x1 = p1.getX();//ClassCastException
System.out.println(x1);//?
}
}
TestPoint2.java
泛型在集合中的应用
package day04; import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator; /**
* 泛型在集合中的应用
* 集合在泛型中是用来规定集合中的元素类型
* @author adminitartor
*
*/
public class Collection_Type {
public static void main(String[] args) {
Collection<String> c
= new ArrayList<String>();
c.add("one");
c.add("two");
c.add("three");
c.add("four"); for(String str : c){
System.out.println(str);
}
/*
* 迭代器也支持泛型,而泛型的实际类型与
* 其遍历的集合的泛型类型一致即可
*/
Iterator<String> it = c.iterator();
while(it.hasNext()){
String str = it.next();
System.out.println(str);
}
}
}
Collection_Type.java
List集合
package day04; import java.util.ArrayList;
import java.util.List; /**
* List集合
* List是可重复集,并且有序
* 特点是可以像数组一样,通过下标操作元素
* 并且也提供了一系列根据下标操作元素的方法
* @author adminitartor
*
*/
public class List_Get_Set {
public static void main(String[] args) {
List<String> list
= new ArrayList<String>(); list.add("one");
list.add("two");
list.add("three");
list.add("four");
System.out.println(list); /*
* E get(int index)
* 获取给定下标处的元素
*/
//获取第二个元素
String str = list.get(1);
System.out.println(str);
//可以使用传统for循环遍历List集合
for(int i=0;i<list.size();i++){
str = list.get(i);
System.out.println(str);
} /*
* E set(int index,E e)
* 将给定元素设置到指定位置处,返回值
* 为原位置对应的元素。
*/
//[one,two,three,four,five]
String old = list.set(1, "2");
System.out.println(list);
System.out.println(old);
}
}
List_Get_Set.java
List提供了一对重载的add,remove方法
package day04; import java.util.ArrayList;
import java.util.List; /**
* List提供了一对重载的add,remove方法
* @author adminitartor
*
*/
public class List_Add_Remove {
public static void main(String[] args) {
List<String> list
= new ArrayList<String>();
list.add("one");
list.add("two");
list.add("three");
list.add("four");
System.out.println(list);
/*
* void add(int index,E e)
* 向集合指定位置插入给定元素
*/
//[one,2,two,three,four]
list.add(1, "2");
System.out.println(list); /*
* E remove(int index)
* 删除给定位置上的元素并将其返回
*/
//[one,2,three,four]
String old = list.remove(2);
System.out.println(list);
System.out.println(old);
}
}
List_Add_Remove.java
截取List集合的子集
package day04; import java.util.ArrayList;
import java.util.List; /**
* 截取List集合的子集
* @author adminitartor
*
*/
public class List_Sublist {
public static void main(String[] args) {
List<Integer> list
= new ArrayList<Integer>(); for(int i=0;i<10;i++){
list.add(i);
}
System.out.println(list);
//取3-7
List<Integer> subList
= list.subList(3, 8);
System.out.println(subList); //将子集元素扩大10倍
for(int i=0;i<subList.size();i++){
subList.set(i, subList.get(i) * 10);
} System.out.println(subList);
/*
* 对子集元素的操作就是对原集合相应内容
* 的操作
*/
System.out.println(list); /*
* 删除3-7
*/
list.subList(3, 8).clear();
System.out.println(list);
}
}
List_Sublist.java
集合转换为数组
package day04; import java.util.ArrayList;
import java.util.Collection; /**
* 集合转换为数组
* Collection提供了方法:toArray
* @author adminitartor
*
*/
public class CollectionToArray {
public static void main(String[] args) {
Collection<String> c
= new ArrayList<String>();
c.add("one");
c.add("two");
c.add("three");
c.add("four");
System.out.println(c);
//不常用
// Object[] array = c.toArray(); String[] array
= c.toArray(new String[c.size()]);
System.out.println("len:"+array.length);
for(String str : array){
System.out.println(str);
}
}
}
CollectionToArray.java
数组转换为集合
package day04; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; /**
* 数组转换为集合
* 使用数组的工具类Arrays的静态方法asList
* 需要注意,只能将数组转换为List集合。
* @author adminitartor
*
*/
public class ArrayToList {
public static void main(String[] args) {
String[] array = {"one","two","three","four"}; List<String> list = Arrays.asList(array);
System.out.println(list.size());
System.out.println(list);
/*
* 修改集合元素就是修改原数组对应元素
*/
list.set(1, "2");
System.out.println(list); for(String str : array){
System.out.println(str);
}
/*
* 添加新元素会导致数组扩容,不允许这样
* 做,因为这样不能表示原数组了。
*/
// list.add("five");//会抛出异常
// System.out.println(list);
/*
* 若想添加新元素,可以自行实例化一个集合
*/
List<String> list1
= new ArrayList<String>(list);
// list1.addAll(list);
list1.add("five");
System.out.println(list1);
}
}
ArrayToList.java
使用集合的工具类Collections的静态方法sort,可以对List集合进行自然排序(从小到大)
package day04; import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random; /**
* 使用集合的工具类Collections的静态方法sort
* 可以对List集合进行自然排序(从小到大)
* @author adminitartor
*
*/
public class SortList {
public static void main(String[] args) {
List<Integer> list
= new ArrayList<Integer>(); Random random = new Random();
for(int i=0;i<10;i++){
list.add(random.nextInt(100));
}
System.out.println(list);
Collections.sort(list);
System.out.println(list);
}
}
SortList.java
JAVASE02-Unit04: 集合框架 、 集合操作 —— 线性表的更多相关文章
- java 集合框架(List操作)
/*list 基本操作 * * List a=new List(); * 增 * a.add(index,element);按指定位置添加,其余元素依次后移 * addAll(index,Collec ...
- Java自学-集合框架 聚合操作
聚合操作 步骤 1 : 聚合操作 JDK8之后,引入了对集合的聚合操作,可以非常容易的遍历,筛选,比较集合中的元素. 像这样: String name =heros .stream() .sorted ...
- java.util 集合框架集合
java的集合框架为程序提供了一种处理对象组的标准方式.设计了一系列标准泛型接口: ⑴Collection ()接口,扩展了Iterable接口,位于集合层次结构的顶部,因此所有的集合都实现Colle ...
- Day04:集合框架(下) / 集合操作——线性表(一)
对象转型 向上转型: 什么是向上造型? 子类对象赋给父类引用 父类引用指向子类对象 父类类型 引用=子类对象; 子类转成父类 默认进行(父类引用指用子类对象). 为什么需要向上造型? 子类对象可 ...
- Day05:集合操作——线性表(二) / 查找表 / 文件操作——File(一)
文件操作:https://www.cnblogs.com/wsnb8/p/11403626.html
- java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)
/*TreeSet * treeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序 * 所以输出的数据是经过排序的数据 * 注:compareTo方法返 ...
- Java8集合框架——集合工具类Arrays内部方法浅析
java.util.Arrays 备注:本文只对 Java8 中的 java.util.Arrays 中提供的基本功能进行大致介绍,并没有对其具体的实现原理进行深入的探讨和分析.详情可自己深入观摩源码 ...
- 集合线性表--List之ArrayList
集合操作——线性表 List: add().remove().subList().list.toArray().array.asList(). List排序: Collections.sort(li ...
- java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类
本文关键词: java集合框架 框架设计理念 容器 继承层级结构 继承图 集合框架中的抽象类 主要的实现类 实现类特性 集合框架分类 集合框架并发包 并发实现类 什么是容器? 由一个或多个确 ...
随机推荐
- RAM和ROM总结
RAM和ROM总结 一.在解释之前先备注一些缩写的全称便于记忆: 1.EPROM:(Electrically Programmable Read-Only-Memory)电可编程序只读存储器 2.EE ...
- Unix系统引导过程(简单步骤)
1.从MBR中读取引导加载程序(boot loader) 2.初始化内核 3.硬件检测 4.创建内核进程 5.系统管理员干预(仅仅在进入单用户模式或者恢复模式的时候) 6.执行系统启动脚本
- 移动硬盘安装win7,蓝屏,0x0000007B
@echo offecho 加载注册表echo.reg load HKLM\sys %1\WINDOWS\system32\config\system >nul 2>nulif error ...
- 【leetcode】Factorial Trailing Zeroes
题目描述: Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be ...
- AutoMapper搬运工之初探AutoMapper
写在前面 知道AutoMapper很久了,但是一直没有用,最近刚好有个场景需要就用了,果然是利器.看了git上的wiki,发现内容其实wiki上写的很全面了,深入的暂时还没挖掘到.不过和群里的朋友交流 ...
- 首师大附中互测题:50229234海岛帝国:独立之战【C002】
[C002]50229234海岛帝国:独立之战[难度C]———————————————————————————————————————————————————————————————————————— ...
- Java 根据两个经纬度坐标计算距离
public class Distance{ private static final double EARTH_RADIUS = 6378137; private static double ...
- 【BZOJ】3835: [Poi2014]Supercomputer
题意 \(n(1 \le 1000000)\)个点的有根树,\(1\)号点为根,\(q(1 \le 1000000)\)次询问,每次给一个\(k\),每一次可以选择\(k\)个未访问的点,且父亲是访问 ...
- 自己封装一个Log模块
Unity自己有log系统,为什么要自己封装一个 1.不好用,只能在pc上记录log文件,移动平台是没有的 2.在开发时期的log,不想在正式版里面出现.没有一个统一的开关来控制是不是要显示log,要 ...
- <九>JDBC_获取插入记录的主键值