Ai ツールを使用してコーディング効率を向上させる方法

序文

あなたや優秀な人材は、これまでいくつかのツールが不足していました。場合によっては、数日間懸命に取り組んだ結果、他の人がツールを使用してそれを成し遂げることができることがわかりました。さまざまな AI ツールの台頭により、私たちは改善できるツールにさらに注目する必要があります作業効率化ツール、この記事では編集効率を大幅に向上させるツール、Ideaプラグインを紹介します。

設置方法

再起動後、Ideaの右側にある をクリックし</>、必要に応じてメールアドレスを入力し、認証コードを受信後登録してください。「コード受信プラットフォーム」は必要なく、登録・ログインが可能です。馬鹿のように。アカウントが登録されると、会話に参加できるようになります。ここで質問があり、使用している GPT のバージョンを尋ねたところ、GPT-3 だと言われ、少し違和感がありますが、明らかに GPT4 と表示されています。

画像.png

合成木の試験

例えば、私たちはよくさまざまなツリーを書いて合成しますが、再帰やループを使用することができます。あまり書かない人は間違いを犯す可能性があります。それができるかどうかテストしてみましょう。

画像.png
質問:

public class Menu {
    
    
    private Long id;
    private Long parentId;
    private String name;
    private List<Menu> subMenus;
}
现在有个  List<Menu>menus对象,请帮我parentId是其父id,请将这些对象合成一个树,将子menus放入subMenus对象中

生成されたコードは少し変更されますが、


package com.test.jdk11.testunicode;

import com.alibaba.fastjson.JSON;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Description: TODO
 * @Author 赵侠客
 * @Date 2023/7/28
 **/

public class Menu {
    
    
  
    private Long id;
    private Long parentId;
    private String name;
    private List<Menu> subMenus;
    
    public static void main(String[] args) {
    
    
        List<Menu> menus=new ArrayList<>();
        menus.add(new Menu(1L,null,"一级"));
        menus.add(new Menu(2L,1L,"一级"));
        menus.add(new Menu(3L,1L,"一级"));
        menus.add(new Menu(4L,3L,"一级"));
        menus.add(new Menu(5L,4L,"一级"));
        List<Menu> tree = buildTree(menus);
        System.out.println(JSON.toJSONString(tree));

    }
    public static List<Menu> buildTree(List<Menu> menus) {
    
    
        Map<Long, Menu> menuMap = new HashMap<>();
        List<Menu> rootMenus = new ArrayList<>();
        // 将所有的菜单对象放入 map 中,以便后续构建树形结构
        for (Menu menu : menus) {
    
    
            menuMap.put(menu.getId(), menu);
        }
        // 遍历菜单对象,将子菜单放入对应的父菜单的 subMenus 属性中
        for (Menu menu : menus) {
    
    
            Long parentId = menu.getParentId();
            if (parentId == null) {
    
    
                // 如果 parentId 为空,则将该菜单对象作为根节点
                rootMenus.add(menu);
            } else {
    
    
                // 如果 parentId 不为空,则将该菜单对象放入对应的父菜单的 subMenus 中
                Menu parentMenu = menuMap.get(parentId);
                if (parentMenu != null) {
    
    
                    if (parentMenu.getSubMenus() == null) {
    
    
                        parentMenu.setSubMenus(new ArrayList<>());
                    }
                    parentMenu.getSubMenus().add(menu);
                }
            }
        }
        return rootMenus;
    }
}

ラムダ式をテストする

テストの質問:

public class TenantBucketSize {
    
     
    private Long tenantId; 
    private String day; 
    private Long size; 
} 
现有List<TenantBucketSize >请根据tenantId分组后再根据day分组按day正序,最后将size求和,

画像.png

生成されたコードも渡されます

public class TenantBucketSize {
    
    
    private Long tenantId;
    private String day;
    private Long size;


    public static Map<Long, Map<String, Long>> calculateTotalSize(List<TenantBucketSize> tenantBucketSizes) {
    
    
        return tenantBucketSizes.stream()
                .collect(Collectors.groupingBy(TenantBucketSize::getTenantId,
                        Collectors.groupingBy(TenantBucketSize::getDay,
                                Collectors.summingLong(TenantBucketSize::getSize))));
    }

    public static void main(String[] args) {
    
    
        List<TenantBucketSize> tenantBucketSizes=new ArrayList<>();
        tenantBucketSizes.add(new TenantBucketSize(1L,"2023-07-08",1L));
        tenantBucketSizes.add(new TenantBucketSize(1L,"2023-07-08",2L));
        tenantBucketSizes.add(new TenantBucketSize(1L,"2023-07-09",3L));
        tenantBucketSizes.add(new TenantBucketSize(2L,"2023-07-08",6L));
        tenantBucketSizes.add(new TenantBucketSize(3L,"2023-07-09",8L));
        System.out.println(JSON.toJSONString(calculateTotalSize(tenantBucketSizes)));
    }

正規表現の生成

誰もが正規表現について少しは知っているはずですが、実際に正規表現を自分で作成したい場合は、より複雑な表現のほとんどを検索する必要があります。

JAVA を使用してメソッドを作成し、文字列を受け取り、ブール値を返し、正規表現を使用してパスワードの長さが 8 より大きく、数字、文字、特殊文字列が含まれていることを検出し、規則性を説明するコメントを追加します。

画像.png

乱数を生成する

JAVA を使用して乱数を生成し、乱数の長さを返す Int パラメータを受け取り、数字、文字、特殊文字列を必要とする String を返すメソッドを作成します。

画像.png

このテスト ケースが失敗したのは残念です。生成された乱数パスワードは正しいですが、コードが間違っています。


 public static void main(String[] args) {
    
    
        for(int i=9;i<15;i++){
    
    
            for(int j=0;j<100;j++){
    
    
                String password=generateRandomString(i);
                System.out.println(password+":密码强:"+validatePassword(password));
            }
        }
    }
    private static final String CHARACTERS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()";
        public static boolean validatePassword(String password) {
    
    
            // 正则表达式解释:
            // ^               开始
            // (?=.*[0-9])     必须包含至少一个数字
            // (?=.*[a-zA-Z])  必须包含至少一个字母
            // (?=.*[@#$%^&+=]) 必须包含至少一个特殊字符(可以根据需要添加或修改特殊字符)
            // (?=\S+$)        不包含空格
            // .{8,}           长度至少为8个字符
            // $               结束
            String regex = "^(?=.*\\d)(?=.*[a-zA-Z])(?=.*[@#$%^&+=]).{8,}$";            return Pattern.matches(regex, password);
        }
        public static String generateRandomString(int length) {
    
    
            SecureRandom random = new SecureRandom();
            StringBuilder sb = new StringBuilder(length);
            for (int i = 0; i < length; i++) {
    
    
                int randomIndex = random.nextInt(CHARACTERS.length());
                char randomChar = CHARACTERS.charAt(randomIndex);
                sb.append(randomChar);
            }
            return sb.toString();
        }

画像.png

おすすめ

転載: blog.csdn.net/whzhaochao/article/details/131975308