----- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ------
/**许多老的电子书了资料里的集合类都没有用泛型,练习的时候很麻烦。而且容器里存的都是Object应用,
* 取出来使用要先强制类型转换,很不方便,也不安全。所以能用泛型尽量使用泛型
* 如:Collection c1=new ArrayList<>();要么自己实现接口
* (2)创建容器类若没有指定<T>只能存放Object对象,凡是涉及到具体类型的方法都不能用
* (3)ArrayList基于数组,可快速增删查改,不支持线程同步
* (4)Vector基于数组,可增删查改,支持线程同步,但效率比ArrayList低
* 因为基于数组。所以ArrayList和Vector创建的时候就要指定元素类型
* (5)LinkedList链表,支持快速遍历,随机访问比较慢
* 而LinkedList每一个节点都可以是不同类型的对象
* LinkList特有的方法 peek=get(0) poll=get(0)+remove(0) push=addfirst() pop=get(0)
* LinkList的Listiterator(int index)的返回值是元素的迭代器
* LinkList.equal比较的是所有元素的值。
* (6)LinkedHashSet相比HashSet可以按放入元素的顺序遍历。
* (7)TreeSet可以按照自己的规则来给元素排序,只要继承Comparator接口,
* 实现里面的compare(Object ,Object)方法即可.
* TreeSet xxx=new TreeSet(new ComparatorByXxx());
* class ComparatorByXxx implements Comparator<Object>{
* @Override public int compare(Object o1, Object o2) {。。。}}
* 还可以让比较对象本身实现Comparable接口。
* (8)实现了Comparable接口的类的comparTo()返回值如果返回一个正数,
* 则表明obj1大于obj2,如果是 负数,则表明obj1小于obj2。
* 如果我们将两个对象的equals方法总是返回true,
* 则这两个对象的compareTo方法返回应该返回0
* (9)boolean retainall(Collection coll) 取交集
*(10)对于一个陌生的容器类,类名的末尾单词是它的接口,漆面的是它的实现
*/
package CollectionDemo.src;
import java.nio.channels.Pipe;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.TreeSet;
import java.util.Vector;
import javax.swing.Popup;
import org.omg.CORBA.PUBLIC_MEMBER;
import org.omg.CosNaming.NamingContextExtPackage.AddressHelper;
public class CollectionDemo {
public static void main(String[] args) {
Collection c1=new ArrayList(); //未用泛型
c1.add("abc");
System.out.println(c1.toString());
c1.add("efg");
System.out.println(c1.toString());
c1.add(false);
System.out.println(c1.toString());
c1.add(String.valueOf(false));
System.out.println(c1.toString());
Object[] obj1=c1.toArray();
//测试存入容器是否会丢失类型信息
if(Boolean.valueOf(obj1[2].toString())==Boolean.valueOf(obj1[3].toString())){
System.out.println("!!!");
}else{
System.out.println("----");
}
System.out.println(obj1[2].toString());
System.out.println(obj1[3].toString());
for(int i=0;i<obj1.length;i++){
System.out.println(obj1[i]);
}
Object o1=new Integer(10);
o1=100;
Object o2=new Integer(100);
System.out.println("o1==o2? "+o1.equals(o2));
ArrayList<Integer> a1=new ArrayList<>();//使用泛型
a1.add(1);
a1.add(12);
a1.add(123);
// a1.set(3, new Integer(1234));
// a1.set(3, new Integer("5678"));
Iterator<Integer> i1=a1.iterator();
System.out.println(a1.getClass().isArray());
while(i1.hasNext()){
System.out.println(i1.next());
}
List list=new ArrayList<>();
Integer iint2=333;
A a=new A();
a.age=10;
xxx(a);
System.out.println(a.age);
LinkedList link1=new LinkedList<>();//链表
LinkedList link2=new LinkedList<>();
LinkedList link11=new LinkedList<>();
LinkedList link22=new LinkedList<>();
LinkedList link0=new LinkedList<>();
link11.add(23);
link22.add(34);
link1.add("123");
link1.add(false);
link1.add(a1);
link0.add(link11);
link2.add("123");
link2.add(false);
link2.add(a1);
link0.add(link22);
link1.add(link0);
link2.add(link0);
LinkedList link00= (LinkedList) link1.peekLast();
link00.add(10000);
ListIterator<ArrayList<Integer>> it0=link1.listIterator(3);
while(it0.hasNext()){
System.out.println(it0.next());
}
LinkedList<Integer> linka=new LinkedList<Integer>();
LinkedList linkb=new LinkedList<Integer>();
int int1=3,int2=6,int3=998;
System.out.println("*******************");
Person p1=new Person("goc",23);
Person p2=new Person("sb",34);
Person p3=new Person("gag",54);
Person p4=new Person("ede",30);
TreeSet ts=new TreeSet();
ts.add(p1);
ts.add(p2);
ts.add(p3);
ts.add(p4);
Iterator itts=ts.iterator(); //利用迭代器遍历
while(itts.hasNext()){
Person p=(Person) itts.next();
System.out.println(p.getName()+":"+p.getAge());
}
LinkedHashSet lhs=new LinkedHashSet();
lhs.add("adfdg");
lhs.add("bdfadf");
lhs.add("cfdf");
Iterator it_lhs=lhs.iterator();
while(it_lhs.hasNext()){
System.out.println("lhs " +it_lhs.next());
}
HashSet hs=new HashSet();
hs.add("afdasf");
hs.add("bdd");
hs.add("cdafd");
Iterator it_hs=hs.iterator();
while(it_hs.hasNext()){ //遍历哈希集合
System.out.println("hs " +it_hs.next());
}
}
public static void xxx(A a){
a.age++;
}
class Duilie{ //队列
LinkedList<String> list;
Duilie(){
list=new LinkedList<>();
}
public void myAdd(String str){
list.add(str);
}
public String myGet(){
return list.getFirst();
}
}
}------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ------
本文深入探讨Java集合框架中各种容器的特性和应用场景,包括ArrayList、LinkedList、HashSet等,并对比它们之间的区别,帮助开发者选择合适的容器类。
582

被折叠的 条评论
为什么被折叠?



