• 售前

  • 售后

热门帖子
入门百科

数组过滤元素生成新数组

[复制链接]
索支较 显示全部楼层 发表于 2022-1-15 07:38:45 |阅读模式 打印 上一主题 下一主题
  1.   public static <T> T[] filterArray(T[] resource, Predicate<T> filter, IntFunction<T[]> supplier) {
  2. //        T[] o = ((T[]) Array.newInstance(resource[0].getClass(), 0));
  3.         int count = 0;
  4.         byte[] map = new byte[resource.length / 8 + 1];
  5.         for (int i = 0; i < resource.length; i++) {
  6.             if (filter.test(resource[i])) {
  7.                 map[i / 8] |= 1 << i % 8;
  8.                 count++;
  9.             }
  10.         }
  11.         T[] res = supplier.apply(count);
  12.         for (int i = 0, j = 0; i < resource.length && j < count; i++) {
  13.             if ((map[i / 8] & 1 << i % 8) > 0) {
  14.                 res[j] = resource[i];
  15.                 j++;
  16.             }
  17.         }
  18.         return res;
  19.     }
  20.     public static void main(String[] args) {
  21.         for (String s : filterArray(new String[]{"a", "shit", "x", "shit","not shit"}, s -> !s.equals("shit"), value -> new String[value])) {
  22.             System.err.println(s);
  23.         }
  24.     }
复制代码
来源:https://blog.caogenba.net/weixin_42002173/article/details/122491667
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作