List:有序的集合,可以重复
set:无序的集合,不可以重复
map:key-value(web基础)
List和set Collection:
Collection
add(E)用于添加元素
remove(E):用于删除元素
size():返回元素的个数
isEmpty():个数是否为0
add和remove方法的使用
package cn.tedu.collection;
import java.util.ArrayList;
import java.util.Collection;
//测试Collection接口的常用方法
public class Demo {
/**
* jdk5.0之后出现的
* Collection coll = new ArrayList();
* @param args
* jdk1.7之后
* Collection coll = new ArrayList<>();
*/
public static void main(String[] args) {
Collection coll = new ArrayList<>();
//必须只能在尖括号里面放入引用类型
Collection coll1 = new ArrayList<>();
System.out.println(coll.isEmpty());//true
coll1.add(1);//里面写进本数据类型是因为其进行了自动封箱
coll.add("abcde");
coll.add("hello");
boolean b =coll.isEmpty();//null size=0
System.out.println(b);//false
System.out.println(coll.size());//得到集合里面的元素的个数
//看集合里面是否包含“hello”
System.out.println(coll.contains("hello"));//true
coll.remove("hello");
System.out.println(coll.size());//1
coll.clear();
System.out.println(coll.isEmpty());//true
}
}
for(E e:collection){}:增强for循环输出
iterator:使用迭代器
forEach():使用lambda表达式输出
package cn.tedu.collection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import org.omg.Messaging.SyncScopeHelper;
public class Demo2 {
public static void main(String[] args) {
Collection coll = new ArrayList<>();
Collection coll1 = new ArrayList<>();
coll1.add(1);//里面写进本数据类型是因为其进行了自动封箱
coll.add("abcde");
coll.add("hello");
coll.add("123456");
//第一种方式:增强for循环
for(String str:coll){
System.out.println(str);
}
System.out.println("++++++++++++++++++++++++++");
//第二种方式:迭代器
Iterator it = coll.iterator();
while(it.hasNext()){
String str = it.next();//字符串类型的
System.out.println(str);
}
System.out.println("------------------------------");
//第三种方式:lambda
coll.forEach(a->System.out.println(a));
//for (T t : this)
// action.accept(t);
}
}
List
ArrayList:数组
package cn.tedu.collection;
import java.util.ArrayList;
import java.util.Collection;
public class Demo3 {
public static void main(String[] args) {
Collection c1= new ArrayList<>();
c1.add("C");
c1.add("C++");
c1.add("java");
Collection c2= new ArrayList<>();
c2.add("jsp");
c2.add("php");
c2.add("java");
boolean b= c1.contains(c2);
System.out.println(b);//false
boolean b2=c1.addAll(c2);
//c1.forEach(str->System.out.println(str));
//c1.removeAll(c2);
c1.forEach(str->System.out.println(str));//C C++ java jsp php java
System.out.println("-----------------------");
}
}
在list里面进行索引删除: 和集合相关的操作: 数组转集合:Arrays.asList();集合转换成数组toArray():toArray(T[] t) Comparable:嵌入到排序的类里面 TestSort.java: Student类需要创建 两个构造方法以及一个toString方法以及两个变量的get、set方法 String name; 泛型: java泛型设计原则:保证在编译的时候不出现错误,运行时就不会出现类强制转换异常:ClassCastException 在void之前有一个 子类明确泛型类型参数变量不是泛型类时: 子类不明确泛型的类型参数变量,里面的泛型类型会一直是T,是泛型类
add方法add(index ,E e)
remove(index);
set(index, E e)完成修改功能,set里面没有,因为set无序,没办法使用修改
get(index)
for(int i = 0;ipackage cn.tedu.collection;
import java.util.ArrayList;
import java.util.List;
public class Demo4 {
public static void main(String[] args) {
List
addAll();
removeAll();
containsAll();package cn.tedu.collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Demo5 {
//集合转换成数组
public static void test1(){
List
排序:
Comparator:在外部排序,改变默认的排序规则
Arrays.sort(数组):里面是数组排序
Collections.sort(List):是对list进行的排序操作package cn.tedu.collection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* 按照学生成绩排序
1.定义student类:
两个变量:name,score
方法
2.定义集合,3个student对象 添加到集合
3.使用sort方法排序,排序时指定排序规则
4.输出排序后的集合
* @author cll
*
*/
public class TestSort {
public static void main(String[] args) {
List
int score;
public Student(){
}
public Student(String name,int score){
super();
this.name=name;
this.score=score;
}泛型类和普通方法的区别
T[]可以让各种类型的数组进下面方法的使用//输出任意数据类型的数组元素
public static
以接口为例:泛型接口package cn.tedu.T;
interface DemoInter
设置通配符的上限:? extends T
设置通配符的下限:? super Tpackage cn.tedu.T;
import java.util.ArrayList;
import java.util.List;
public class Demo3 {
//设置通配符的上限
public static void test(List extends Number> list){
for(Number obj:list){
System.out.println(obj);
}
}
//设置通配符的下限
public static void test2(List super Number> list1){
for(Object obj:list1){
System.out.println(obj);
}
}
public static void main(String[] args) {
//测试通配符的上限
//需要设置的类型要小于上面设置的Number类型
List