当前位置: 移动技术网 > IT编程>开发语言>Java > 7.6学习总结

7.6学习总结

2020年07月07日  | 移动技术网IT编程  | 我要评论

7.6学习总结

  1. 学习了Java的集合框架有几个要点:
  • 学习方法

    • 学习顶层(顶层接口是共性的方法,所有的子类都可以用),使用底层(底层不是接口就是抽象类,须使用底层的子类创建对象使用)
  • Collection接口定义的都是所有单列集合的共性方法

    • List接口 有序的集合 允许重复元素存储
      • Vector ArrayList LinkList
    • Set接口 不允许重复元素 没有索引
      • TreeSet HashSet (子接口 LinkedHashSet)
  • Iterator :迭代器,实现单列集合的遍历 hasnext() next()

  1. 斗地主案例:
public static void main(String[] args) {
        ArrayList<String> poke = new ArrayList<>();//存放扑克
        String[] color = {"♠", "♥", "♦", "♣"};
        String[] num = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};
        poke.add("大王");
        poke.add("小王");
        for (String s1 : num) {//遍历生成其余52张牌
            for (String s : color) {
                poke.add(s + s1);
            }

        }
        Collections.shuffle(poke);//打乱牌的顺序
        ArrayList<String> player1 = new ArrayList<>();
        ArrayList<String> player2 = new ArrayList<>();
        ArrayList<String> player3 = new ArrayList<>();
        ArrayList<String> player4 = new ArrayList<>();
        ArrayList<String> leftpoke = new ArrayList<>();
        for (int i = 0; i < poke.size(); i++) {
            if (i >= 51)
                leftpoke.add(poke.get(i));
            else if (i % 3 == 0 && i < 51)
                player1.add(poke.get(i));
            else if (i % 3 == 1)
                player2.add(poke.get(i));
            else if (i % 3 == 2)
                player3.add(poke.get(i));


        }

        Collections.sort(player1);//排序,调用Collections类的静态方法
        player2.sort(null);//都是使用list接口
        System.out.println(player1);
        System.out.println(player2);
        System.out.println(player3);
        System.out.println(leftpoke);

        /*
         * 匿名内部类*/
        /*Collections.sort(player3, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {

                    return 0;
            }
        });*/
  1. 遇到的问题:
    我本来只是试试sort排序使用List的sort方法出错了上网搜索,使用Collections.sort(player1);然后查看源码看sort是怎么实现的,了解到有一个Comparator比较器,可以重写compare,来实现降序。对List接口的default void sort(Comparator<? super E> c) default疑惑,网上了解到是默认方法是为了接口升级,因为默认方法可以在实现类里面不用重写。

  2. letCode 小题
    输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
    输出:7 -> 0 -> 8
    原因:342 + 465 = 807

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
       ListNode head=new ListNode(0);
    ListNode p=l1,q=l2 ,t=head;
    int carry=0;//进位吗
    
    while(p!=null|| q!=null)//其中一个链表为空
    {  
      int x=(p!=null)? p.val:0;
      int y=(q!=null)? q.val:0;
      int sum = carry + x + y;
        carry = sum / 10;
        t.next = new ListNode(sum % 10);
        t = t.next;
        if(p!=null) p=p.next;//依然要看是否有链表是空的
        if(q!=null) q=q.next;
        if(carry>0)   //考虑到进位。所以要new下一个节点存储多出来的高位
        t.next=new ListNode(carry);
    }
    return head.next;  //返回下一个节点的链表
    }
    
}

本文地址:https://blog.csdn.net/weixin_43297720/article/details/107168579

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网