List分为两种:
ArrayList(查询、更新)--数组
LinkedList(增加、删除)--链表
1.1ArrayList示例--ArrayList的5种遍历形式,实际有三种:for循环、forEach、Iterator
@Test
/**
* @author yto_yh
* ArrayList示例
* 适用于查询、修改
* 一下遍历方式set通用
*/
public void test() {
List num= Arrays.asList(1,2,3,4,5);
System.out.println("初始:"+num);
Iterator it=num.iterator();
System.out.print("第一种遍历:");
while(it.hasNext()) {
System.out.print(it.next()+" ");
}
System.out.print("\n第二种遍历:");
for(Iterator it1=num.iterator();it1.hasNext();) {
System.out.print(it1.next()+" ");
}
System.out.print("\n第三种遍历:");
for(int i:num) {
System.out.print(i+" ");
}
System.out.print("\n第四种遍历:");
num.forEach(i->System.out.print(i+" "));
System.out.print("\n第五种遍历:");
num.forEach(System.out::print);
}
1.2LinkList示列
@Test
/**
* LinkList示列
* 适用于增加、删除
*/
public void test01() {
LinkedList LL= new LinkedList();
LL.addFirst(11111111);
LL.addFirst(11111112);
LL.addFirst(11111113);
// LL.removeLast();
LL.removeFirst();
System.out.println(LL.toString());
}
Set分为:
HashSet:元素不重复,存取无序:不能保证元素的排列顺序,顺序有可能发生变化、不是同步的、集合元素可以是null,但只能放入一个null
LinkedHashSet:元素不重复,存取有序:
TreeSet:元素不重复:TreeSet类型是J2SE中唯一可实现自动排序的类型
2.HashSet、LinkedHashSet、TreeSet示例
@Test
/**
* Set分为:Set集合的特点:元素不重复,存取无序
* HashSet与TreeSet都是基于Set接口的实现类。其中TreeSet是Set的子接口SortedSet的实现类。
* HashSet:元素不重复,存取无序:不能保证元素的排列顺序,顺序有可能发生变化、不是同步的、集合元素可以是null,但只能放入一个null
* LinkedHashSet:元素不重复,存取有序:
* TreeSet:元素不重复:TreeSet类型是J2SE中唯一可实现自动排序的类型
*/
public void test02() {
//-----------------HashSet-------------------------
HashSet hs= new HashSet();
hs.add(1);
hs.add(2);
hs.add(1);
System.out.println("第一种遍历方式:");
Iterator iterator=hs.iterator();
while (iterator.hasNext()) {
Integer integer = (Integer) iterator.next();
System.out.print(integer+" ");
}
System.out.println("\n第二种遍历方式:");
for (Integer integer : hs) {
System.out.print(integer+" ");
}
//-----------------LinkedHashSet-------------------------
LinkedHashSet lhs=new LinkedHashSet();
lhs.add(1);
lhs.add(3);
lhs.add(2);
lhs.add(1);
System.out.println("第一种遍历方式:");
Iterator iterator=lhs.iterator();
while (iterator.hasNext()) {
Integer integer = (Integer) iterator.next();
System.out.print(integer+" ");
}
System.out.println("\n第二种遍历方式:");
for (Integer integer : lhs) {
System.out.print(integer+" ");
}
//-----------------TreeSet-------------------------
TreeSet ts= new TreeSet();
ts.add(1);
ts.add(3);
ts.add(2);
ts.add(1);
System.out.println("第一种遍历方式:");
Iterator iterator1=ts.iterator();
while (iterator1.hasNext()) {
Integer integer = (Integer) iterator1.next();
System.out.print(integer+" ");
}
System.out.println("\n第二种遍历方式:");
for (Integer integer : ts) {
System.out.print(integer+" ");
}
}
3. Map的特点:
HashMap:存取无序,键不可重复
LinkedHashMap:存取有序,键不可重复
TreeMap:自动排序
@Test
/**
* Map的特点:是存取无序,键不可重复
* HashMap,LinkedHashMap和TreeMap
*/
public void test03() {
//-----------------HashMap-------------------------
HashMap hm= new HashMap();
hm.put(1, "value1");
hm.put(3, "value3");
hm.put(2, "value2");
hm.put(3, "value4");//覆盖
System.out.println("第一种遍历方式:");
Set> se= hm.entrySet();
Iterator> iterator = se.iterator();
while (iterator.hasNext()) {
Entry entry =iterator.next();
System.out.print(entry.getKey()+" "+entry.getValue()+"\n");
}
System.out.println("\n第二种遍历方式:");
for(Entry entry:hm.entrySet()) {
System.out.print(entry.getKey()+" "+entry.getValue()+"\n");
}
System.out.println("\n第三种遍历方式:");
for(Integer in:hm.keySet()) {
System.out.print(hm.get(in)+" ");
}
System.out.println("\n第四种遍历方式:");
for(String v:hm.values()) {
System.out.print(v+" ");
}
}
4.Collections自带方法sort()、reverse()、同步等
@Test
/**
* 排序:reverse()(反转集合元素顺序)、shuffle()(随机排列)、
* sort()、swap()等方法。查找和替换:集合元素的出现次数)、
* replaceAll()等方法
*/
public void test04() {
List list= Arrays.asList(1,2,5,3,7,6);
list.forEach(s->System.out.print(s));
System.out.println();
Collections.sort(list);//排序
list.forEach(s->System.out.print(s));
System.out.println();
Collections.reverse(list);//反转
list.forEach(s->System.out.print(s));
//同步控制
Collection c = Collections.synchronizedCollection(new ArrayList());
List l = Collections.synchronizedList(new ArrayList());
Set s = Collections.synchronizedSet(new HashSet());
Map m = Collections.synchronizedMap(new HashMap());
}
5.1 泛型
/**
* 泛型
* Java泛型最简单的方法是把它看成一种便捷语法,
* 能节省你某些Java类型转换( casting)上的操作
*/
@Test
public void test05() {
ArrayList aL =new ArrayList();
aL.add(new User("yoko","pswyoko"));
User u=aL.get(0);
System.out.println(u);
}
5.2 泛型类 泛型接口
@Test
/**
* 泛型类
* 泛型接口
*/
public void test06() {
Generic g= new Generic();
g.setKey(111111111);
System.out.println("泛型类:"+g.getKey()+"\n泛型接口:"+g.getKey("111","222"));
}
/**
* @author yto_yh
*
*/
public class Generic implements GenericInterface{
private T key;
public Generic() {
super();
}
public Generic(T key) {
super();
this.key = key;
}
public T getKey() {
return key;
}
public void setKey(T key) {
this.key = key;
}
/* (non-Javadoc)
* @see com.example.demo0810.test.GenericInterface#getKey(java.lang.Object, java.lang.Object)
*/
// @Override
public Integer getKey(Integer t1, Integer t2) {
// TODO Auto-generated method stub
return t1+t2;
}
/* (non-Javadoc)
* @see com.example.demo0810.test.GenericInterface#getKey(java.lang.Object, java.lang.Object)
*/
@Override
public String getKey(String t1, String t2) {
// TODO Auto-generated method stub
return t1+t2;
}
}
/**
* @author yto_yh
*
*/
public interface GenericInterface {
T getKey(T t1,T t2);
}
/**
* @author yto_yh
*
*/
public class Info {
private T var;
public T getVar() {
return var;
}
public void setVar(T var) {
this.var = var;
}
@Override
public String toString() {
return "var=" + this.var.toString();
}
}
/**
* @author yto_yh
*
*/
public class GenericsDemo {
public static void fun(Info super String> temp) {//泛型在父类String的子类之中
System.out.println(temp);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Info info1=new Info<>();
Info