集合相关编程题

集合:

1随机产生 20 个整数(10以内的),放入一个ArrayList

用迭代器遍历这个ArrayList、并删除其中为 的数、再产生 个整数,插入到位置 、把所有值为 的数都变成 10

import java.util.ArrayList;

class ArrayList{

     private Object[] os = new Object[20];

}

 public class TestArray{

     public static void main(String[]args){

         ArrayList a = new ArrayList();

         

         ma.add("aaa");

         ma.add("bbb");

         ma.add("ccc");

         Object o = ma.get(1);

         Iterator it = ma.iterator();

         while(it.hasNext()){

             Object o1 = it.next();

             System.out.println(o1);

         }

     }

 }

2产生 3000 个 10 以内的数,放入 hashSet遍历它,打印每一个值

import java.util.HashSet;

import java.util.Iterator;

import java.util.Random;

public class TestHashSet {

    public static void main(String[] args) {

        Random r = new Random();

        HashSet hs1 = new HashSet();

        for(int i=0; i<3000; i++){

            hs1.add(r.nextInt(10));

        }

        Iterator it1 = hs1.iterator();

        while(it1.hasNext()){

            System.out.print(it1.next()+" ");

        }

    }

}

//由于 HashSet 不能重复,所以只有10个数在里面,按哈希排序

2 4 9 8 6 1 3 7 5 0 

/*

 * 测试TreeSet 的比较器,

 * 在有自己的比较器的情况下,如何实现Comparable接口

 */

import java.util.*;

class Teacher{

    int id;

    String name;

    int age;    

    public Teacher() {}

    public Teacher(int id, String name, int age) {

        this.id = id;

        this.name = name;

        this.age = age;

    }

    public int getId() {    return id;    }

    public void setId(int id) {this.id = id;    }

    public String getName() {    return name;}

    public void setName(String name) {    this.name = name;}

    public int getAge() {return age;}    

    public void setAge(int age) {this.age = age;}

    

    public int TeacherComparator(Object o){

        Teacher t1 = (Teacher) o;

        if(t1.getId() > id){return 1;}

        else if (t1.getId() < id){return -1;}

        return 0;

    }

}

class TreeSet{

    

}

class Test {

    public static void main(String[] args) {

        String s1 = new String("aaa");

        String s2 = new String("bbb");

        String s3 = new String("aaa");

        System.out.println(s1==s3);

        System.out.println(s1.equals(s3));

        

        HashSet hs = new HashSet();

        hs.add(s1);

        hs.add(s2);

        hs.add(s3);

        Iterator it = hs.iterator();

        while(it.hasNext()){

            System.out.println(it.next());

        }

        System.out.printf("%x\n",s1.hashCode());

        System.out.printf("%x\n",s2.hashCode());

        System.out.printf("%x\n",s3.hashCode());

    }

}

3Map中,以nameKey,以Student类 作Velue,写一个HashMap

import java.util.*;

class Student{

    int id;

    String name;

    int age;    

    public Student() {}

    public Student( int id, String name, int age) {

        this.id = id;

        this.name = name;

        this.age = age;

    }

    public int getId() {return id;}

    public void setId(int id) {this.id = id;}

    public String getName() {return name;}

    public void setName(String name) {this.name = name;}

    public int getAge() {return age;}    

    public void setAge(int age) {this.age = age;}

}

class TestHashMap{

    public static void main(String[] args) {

        HashMap hm = new HashMap();

        Student s1 = new Student(1,"jacky",19);

        hm.put("jacky",s1);

        hm.put("tom",new Student(2,"tom",21));

        hm.put("kitty",new Student(3,"kitty",17));

        

        Iterator it = hm.keySet().iterator();

        while(it.hasNext()){

            Object key =  it.next();

            Student value = (Student) hm.get(key);

            System.out.println(key+":id="+value.id+",age="+value.age);

        }

        System.out.println("=============================");

        

        //比较 KeySet() 和 entrySet() 两种迭代方式

        for(Iterator i1 = hm.entrySet().iterator(); i1.hasNext(); )

        { Map.Entry me = (Map.Entry) i1.next();

       Student s = (Student) me.getValue();

            System.out.println(me.getKey()+": id="+s.id+" age="+s.age);

        }        

    }

}

4自己写一个栈:     ( 先进后出 )

     建议底层用LinkedList实现

 参照 java.util.Stack

 方法:  boolean empty()  测试堆栈是否为空。

    E  peek()        查看栈顶对象而不移除它。

    E  pop()         移除栈顶对象并作为此函数的值返回该对象。

    E  push(E item)  把项压入栈顶。

    int     search(Object o)     返回对象在栈中的位置,以 为基数。

***************************************************************************************/

//不能用继承,因为它破坏封装。只需调用即可

import java.util.LinkedList;

class MyStack<E>{

    private LinkedList<E> list = new LinkedList<E>();

    public  boolean empty()     {return list.isEmpty();}

    public  E peek()            {return list.peek();   }

    public  E pop()             {return list.poll();   }

    public  void push(E o)      {list.addFirst(o);     }    

    

    //int    indexOf(Object o) 返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1

    public  int search(Object o){return list.indexOf(o);}

}

5用JAVA实现一种排序,JAVA类实现序列化的方法(二种)? 如在 COLLECTION框架中,实现比较要实现什么样的接口?

package test;

import java.util.*;

class InsertSort {

ArrayList al;

public InsertSort(int num,int mod) {

al = new ArrayList(num);

Random rand = new Random();

System.out.println("The ArrayL{

al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1));

System.out.println("al["+i+"]="+al.get(i));

}

}

public void SortIt() {

Integer tempInt;

int MaxSize=1;

for(int i=1;i<al.size();i++) {

tempInt = (Integer)al.remove(i);

if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue()) {

al.add(MaxSize,tempInt);

MaxSize++;

System.out.println(al.toString());

} else {

for (int j=0;j<MaxSize ;j++ ) {

if (((Integer)al.get(j)).intValue()>=tempInt.intValue()) {

al.add(j,tempInt);

MaxSize++;

System.out.println(al.toString());

break;

}

}

}

}

System.out.println("The ArrayList Sort After:");

for(int i=0;i<al.size();i++) {

System.out.println("al["+i+"]="+al.get(i));

}

}

public static void main(String[] args) {

InsertSort is = new InsertSort(10,100);

is.SortIt();

}

}

6、创建一个类Stack,代表堆栈(其特点为:后进先出),添加方法add(Object obj)、方法get()和delete( ),并编写main方法进行验证。

参考代码:

import java.util.LinkedList;

import java.util.List;

class Stack{

LinkedList list;

public Stack() {

list = new LinkedList();

}

public void add(Object obj){

list.addFirst(obj);

}

public Object get(){

return list.getFirst();

}

public void delete(){

list.removeFirst();

}

}

public class Ex13 {

public static void main(String[] args) {

Stack stack=new Stack();

stack.add(“1″);

stack.add(“2″);

stack.add(“3″);

System.out.println(stack.get());

stack.delete();

System.out.println(stack.get());

}

}

7、创建一个HashMap对象,添加一些学生的姓名和成绩:张三:90分,李四,83分。接着从HashMap中获取并他们的姓名和成绩,然后把李四的成绩改为100分,再次输出他们的信息。

参考代码:

import java.util.HashMap;

public class Ex15 {

public static void main(String[] args) {

HashMap map=new HashMap();

map.put(“张三“,90);

map.put(“李四“,83);

System.out.println(“修改前的成绩:“);

System.out.println(map);

map.put(“李四“,100);

System.out.println(“修改后的成绩:“);

System.out.println(map);

}

}

8试编写一个List类型的对象只能存储通讯录(存储同学的姓名和联系方式),并输出通讯录的列表到控制台。

参考代码:

import java.util.*;

class Student{

private String name;

private String phone;

public Student(String name, String phone) {

this.name = name;

this.phone = phone;

}

public String toString() {

return name+”:”+phone;

}

}

public class Ex21 {

public static void main(String[] args) {

Student st1=new Student(“John”,”23214″);

Student st2=new Student(“Alice”,”4563″);

List<Student> list=new ArrayList<Student>();

list.add(st1);list.add(st2);

for(int i=0;i<list.size();i++)

System.out.println(list.get(i));

}

}

9设计一个程序,基于泛型Map实现10个英文单词的汉语翻译,即通过单词得到它的中文含义。

参考代码:

import java.util.*;

public class Ex22 {

public static void main(String[] args) {

String[] eng={“Apple”,”Orange”,”Green”};

String[] chs={“苹果“,”桔子“,”绿色“};

Map<String,String> map=new HashMap<String,String>();

for(int i=0;i<eng.length;i++)

map.put(eng[i],chs[i]);

String test=”Orange”;

System.out.println(test+”翻译:“+map.get(test));

}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FairyTale

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值