1) System.out.println(list);
站在用户的角度思考问题,与客户深入沟通,找到青田网站设计与青田网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、网站建设、企业官网、英文网站、手机端网站、网站推广、空间域名、网页空间、企业邮箱。业务覆盖青田地区。
2) [Hello,Java,Learn,World]
3)改第一句List list=new LinkedList();
1. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2. 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3. 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
4. ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间。
4)Vector list=new Vector();
1. Vectors是可同步化的,意思就是说,任何操作Vector的内容的方法都是线程安全的,相反的,另一方面,ArrayList是不可同步化的,所以也不是线程安全的。
2. 不管是ArrayList还是Vector,在它们内部都是使用一个数组来保存数据的。开发过程中,在使用它们任何一个的时候,你都需要记住这一点。你在往一个ArrayList或者Vector里插入一个元素的时候,如果内部数组空间不够了,ArrayList或者Vector就要扩展它的大小。Vector在默认情况下是增长一倍的大小,而ArrayList增加50%的大小。
//我用集合框架的老大跟子类ArrayList给你写个例子
import java.util.*;
public class CollectionDemo{
public static void main(String[] args){
Collection c = new ArrayList();
//增加
c.add("Java01");
c.add("Java02");
//删除0角标的值
c.remove(0);
//排序 为了方便,我把集合框架转成了String[]数组
String[] arr = new String[c.size()];
arr = c.toArray();
Arrays.sort(arr);
//最大值
System.out.println(arr[arr.length-1]);
//因为我是String字符串集合值,没办法比较平均值,可以更改为Interger
}
}
public static void main(String[] args) {
Integer[] A = {1,2,3,4};
Integer[] B = {1,3,7,9,11};
ListInteger listA = Arrays.asList(A);
ListInteger listB = Arrays.asList(B);
ListInteger jiaoji = new ArrayListInteger();
for(Integer a:listA){
if(listB.contains(a)){
jiaoji.add(a);
}
}
System.out.println(jiaoji);
ListInteger bingji = new ArrayListInteger();
for(Integer a:listA){
if(!bingji.contains(a)){
bingji.add(a);
}
}
for(Integer b:listB){
if(!bingji.contains(b)){
bingji.add(b);
}
}
System.out.println(bingji);
ListInteger chaji = new ArrayListInteger();
for(Integer a:listA){
if(!listB.contains(a)){
chaji.add(a);
}
}
System.out.println(chaji);
}
TreeSet应该是用泛型编写的,你怎么没数据类型饿
原因很简单,你反序的语句
Collections.reverse(new ArrayList(Arrays.asList(col.toArray())));
实际上是把一个新new的arrayList对象反序,而不是把col反序
package com.dy.test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
public class Test {
public static void main(String[] args) throws IOException {
Student[] stu = new Student[10];
stu[0] = new Student("20170101", "小明", new Random().nextInt(41) + 60);
stu[1] = new Student("20170102", "小红", new Random().nextInt(41) + 60);
stu[2] = new Student("20170103", "小华", new Random().nextInt(41) + 60);
stu[3] = new Student("20170104", "小风", new Random().nextInt(41) + 60);
stu[4] = new Student("20170105", "小黄", new Random().nextInt(41) + 60);
stu[5] = new Student("20170106", "小绿", new Random().nextInt(41) + 60);
stu[6] = new Student("20170107", "小帅", new Random().nextInt(41) + 60);
stu[7] = new Student("20170108", "小黑", new Random().nextInt(41) + 60);
stu[8] = new Student("20170109", "小军", new Random().nextInt(41) + 60);
stu[9] = new Student("20170110", "小胖", new Random().nextInt(41) + 60);
System.out.println("排序前:");
for (int i = 0; i stu.length; i++) {
System.out.println(stu[i]);
}
// List集合
ListStudent stuList = new ArrayListStudent();
for (int i = 0; i stu.length; i++) {
stuList.add(stu[i]);
}
System.out.println("List排序:");
Collections.sort(stuList); // 排序方法
for (int i = 0; i stuList.size(); i++) {
System.out.println(stuList.get(i));
}
// Set集合
SetStudent stuSet = new TreeSetStudent(); // TreeSet自动排序
for (int i = 0; i stu.length; i++) {
stuSet.add(stu[i]);
}
System.out.println("Set排序:");
for (int i = 0; i stuSet.size(); i++) {
System.out.println(stuSet.toArray()[i]);
}
// Map
MapStudent, Object stuMap = new TreeMapStudent, Object(); // TreeMap自动排序
for (int i = 0; i stu.length; i++) {
stuMap.put(stu[i], i);
}
System.out.println("Map排序:");
Object[] keys = stuMap.keySet().toArray();
for (int i = 0; i keys.length; i++) {
System.out.println(keys[i]);
}
}
}
class Student implements ComparableStudent {
private String sid;
private String sname;
private int score;
public Student(String sid, String sname, int score) {
super();
this.sid = sid;
this.sname = sname;
this.score = score;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public int compareTo(Student o) {
// return this.score - o.getScore(); // 从低到高
int r = o.getScore() - this.score; // 从高到低
return r == 0 ? o.getSid().hashCode() - sid.hashCode() : r;
}
@Override
public String toString() {
return sname + "(" + sid + ") " + score + "分";
}
}
运行效果:
Set中的对象不按特定方式排序,并且没有重复对象。但它的有些实现类能对集合中的对象按特定方式排序,例如TreeSet类,它可以按照默认排序,也可以通过实现java.util.ComparatorType接口来自定义排序方式。Set中不能有重复对象,那么它是如何判断要加入到集合中的对象是否重复呢?当要加入一个对象到Set集合中时,会先调用该对象的hashcode()方法,根据hashcode来确定该对象应该放在哪个内存地址上。如果计算出的内存地址中已经放入了对象,那说明这两个对象相同,就不会将这个对象加入到集合中。如果计算出的内存地址中没有放入对象,则调用该对象的equals()方法,把它与集合中每一个对象进行比较,看这两个对象是否相同。如果相同,则不加入这个对象到Set集合中。如果不同则加入该对象。