1 函数题 1-8

1),比较

//public class Student implements Comparable<Student>,Comparable<Student> 接口要求
//实现一个 compareTo 方法,允许你定义两个 Student 对象之间的排序规则

    @Override
 public int compareTo(Student o)
    {
        if(this.math!=o.math)
        return this.math-o.math;//从小到大this在前
        else if( this.english!=o.english)
            return o.english-this.english;//从大到小o在前
        else if(this.cs!=o.cs)
            return this.cs-o.cs;
        else if(!this.name.equals(o.name))
            return o.name.compareTo(this.name);//逆序o在前
        else 
            return this.id-o.id;
    }

2),重写类输出

public String toString
//返回String

3),链表和集合

class StringList {

    public LinkedList<String> constructList(String[] strs) {
        LinkedList<String> ll = new LinkedList<String>();//存储结果
        HashSet<Integer> hs = new HashSet<Integer>();//存储长度
        for (int i = 0; i < strs.length; i++) {
            if (hs.contains(strs[i].length())) {
                continue;
            } else {
                ll.add(strs[i]);
                hs.add(strs[i].length());
            }
        }
        return ll;
    }
/*
链表LinkedList,集合Hashset,是Integer,因为只能储存对象,不能
直接存储基本数据类型。
Hashset不保证元素顺序,元素不重复。
add,remove,contains,size,clear,iterator
LinkedList保证插入顺序,允许重复动态增减
add,move,get,set(替换),size,clear,iteartor,contains

快捷遍历 for (String x : list) 
*/

    public String search(LinkedList<String> list) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        String result = "not exist";
        for (String x : list) {
            if (x.length() == n) {
                return x;
            }
        }
        return result;
    }
}

4)动态数组


// 将字符串按空格分割,并返回一个可修改的 List
    public static List<String> convertStringToList(String line) {
        // 使用 ArrayList 来包装 Arrays.asList 的结果
        return new ArrayList<>(Arrays.asList(line.split("\\s+")));
/*List<String> s = new ArrayList<String>();
s = Arrays.asList(line.split("\\s+"));
return s;
aslist返回的大小固定不可变,修改会报错
*/
   }
    // 移除列表中的指定字符串
    public static void remove(List<String> list, String str) {
//list.remove(str);
list.removeIf(e -> e.equals(str)); 
//e -> e.equals(str),即删除所有等于 str 的元素
        //只会删除列表中 第一个匹配的元素
    }

 
/*
ArrayList有顺序允许重复,随机访问
add,get,indexOf,set,remove(指定位置或首次出现的元素),size,clear,toArray
*/
public static List<String> convertStringToList(String line)
	{
		List<String> s = new ArrayList<String>();//声明方法
		String str = ""; 
		for(int i=0;i<line.length();i++)
		{
			char c = line.charAt(i);
			if(c==' ')
			{
				if(!str.equals("")) s.add(str);
				str="";
			}
			else {
				str+=c;
			}
		}
		if(!str.equals("")) s.add(str);  //若str非空,最后的单词加入
		return s;
	}
public static void remove(List<String> list, String str)
	{
		List<String> s = new ArrayList<String>();
		s.add(str);
		list.removeAll(s);
    //removeAll需要传入一个集合
	}

5)迭代器

class MyTool{
	public static void separateStu_T(List persons,List teachers,List students){
		Iterator It = persons.iterator();//迭代器
		
		while( It.hasNext()){

			Person p= (Person) It.next();
			if(p instanceof Teacher){
				teachers.add((Teacher)(p));
			}
			else{// if( It.next() instanceof Student){
				students.add((Student)(p));
			}
		}
		
	}
}

以上为函数体1-8

2 编程题 1-8

1)去除换行符

 ArrayList<String> list = new ArrayList<String>();
 
int n = cin.nextInt();
String s = cin.nextLine();//!!!不去换行符会出错
while(n -- != 0)
{
s = cin.nextLine();

2),重写比较

list.sort(new Comparator<String>() {
    //一个用于比较 String 类型的对象的比较器
    //创建了一个匿名类,这个匿名类实现了 Comparator<String> 接口。
    @Override
     //compare 方法是 Comparator 接口中的一个方法
    public int compare(String o1, String o2) {
        return Integer.parseInt(o1.substring(0, 4)) - Integer.parseInt(o2.substring(0, 4));
        //小于0则o1在前,从小到大排序
    }
});

3),mapset去重

键对应的值可以更新

Map<String, String> map = new TreeMap<String, String>();
//会打乱顺序,元素顺序不一定与插入顺序一致
 LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
//有序的,可以保证元素插入顺序
        for(int i = 1; i <= n; i ++)
        {
            String s = cin.nextLine();
            String t = s.substring(0, 4);
            map.put(t, s);
            //将学号作为key
        }
        System.out.println(map.size());
        for(String it : map.keySet())
        {
            //返回一个包含所有 Map 中键(key)的 集合(Set)
            System.out.println(map.get(it));
        }

4),集合判等

Set<Integer> set1=new HashSet<Integer>()
Set<Integer> set2=new HashSet<Integer>();
        if(set1.containsAll(set2)&&set2.containsAll(set1)) {
            System.out.println("YES");

5),比较去重

!list.contains(girl)
    //判断列表中是否已经有该元素

 list.sort(new Comparator<Girl>()
{
    @Override
    public int compare(Girl o1, Girl o2) {
        if(o1.hh == o2.hh)
            return o2.age - o1.age;
        return o1.hh - o2.hh;
    }
});
//匿名内部类比较

        for(Girl it : list)
        System.out.println(it);
//输出

//类里重写比较函数
@Override
public boolean equals(Object obj) {
    Girl g = (Girl) obj;
    if(hh!=g.hh)
        return false;
    if(age!=g.age)
        return false;
    if(!name.equals(g.name))
        return false;
    if(!phone.equals(g.phone))
        return false;
    return true;
}

6),计数器

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Map<String, Integer> map = new TreeMap<String, Integer>();
        String str;
        int[] book = new int[200];//记录每一个字符出现的次数
        while (true)
        {
            str = input.nextLine();
            if (str.equals("0000"))//循环结束条件
            {
                break;
            }
            str = str.toUpperCase();//题目要求将文本全部转化为大写字母

            for (int i = 0; i < str.length(); i++)//记录改行字符串中每一个字符
            {
                book[str.charAt(i)]++;
            }

            String[] temp = str.split(" ");//通过split函数将字符串通过其中所含有的空格分开,分开后就成了一个个单词

            for (int i =0; i < temp.length; i++)//将每个单词记录进map中
            {
                if (map.containsKey(temp[i]))//如果map中已经记录过该单词,将该单词对应的值加一
                {
                    map.put(temp[i],map.get(temp[i]) + 1);
                }
                else//如果没有记录过,创建一个键值对
                {
                    map.put(temp[i], 1);
                }
            }
        }
        String text_Max = null, text_Min = null;//记录出现次数最多的单词和出现最少的单词
        int Max = 0, Min = 100000000;//记录出现次数最多和最少的次数
        for( String it:map.keySet())
        {
            if(map.get(it)>Max||(map.get(it)==Max&&it.compareTo(text_Max) > 0))
            //这里需要调用compareto
            { text_Max=it;
                Max=map.get(it);
            }
            if(map.get(it)<Min)
            { text_Min=it;
                Min=map.get(it);
            }
        }
        // }
        System.out.printf("%-10s%8d\n", text_Max, Max);
        //-代表左对齐,如果少于10个,则用空格补齐
        //%8d右对齐字符宽度至少为8
        System.out.printf("%-10s%8d\n", text_Min, Min);
        for (int i = 'A'; i  <= 'Z'; i++)
        {
            System.out.printf("%-10c%8d\n", i, book[i]);
        }
        input.close();
    }
}

7),迭代器遍历

   import java.util.Map.Entry;
        Iterator it = map.entrySet().iterator();
//map.entrySet() 返回 Map 中所有的键值对(即 Map.Entry 对象)的集合
        while(it.hasNext())
        {
            Entry ex = (Entry)it.next();
 //it.next() 返回迭代器中的下一个元素,在这里是一个 Map.Entry 对象。Map.Entry 对象表示一个键值对
           // Entry ex 变量用来保存当前遍历的 Map.Entry 对象。注意,Entry 是 Map.Entry 的一个简写
            System.out.println(ex.getKey() + " " + ex.getValue());
        }

3 判断题

4 单选题

5 多选题

posted on 2024-11-04 08:22  Hoshino1  阅读(2)  评论(0编辑  收藏  举报