JAVA实现Lits元素反转

JAVA实现Lits元素反转

  1. 这种的翻转
import com.google.common.collect.Lists;
import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.HashBag;

import java.util.*;
import java.util.stream.Collectors;


public class Test {

    public static void main(String[] args) {
        List<Integer> intList = Arrays.asList(0, 0, 0, 1, 1, 2, 3, 3);
        List<Integer> resultList = Lists.newArrayListWithCapacity(intList.size());
        List<Integer> uniqueList = new ArrayList<>();
        Bag intListBag = new HashBag(intList);
        int iniNum = 0;
        for (int i = intList.size() - 1; i >= 0; i--) {
            //去重的 List,元素在该 List 里的个数
            Bag bag = new HashBag(uniqueList);
            //如果该元素在 uniqueList 的个数小于1  说明该元素没有添加过
            if (bag.getCount(intList.get(i)) < 1) {
                //算一下反转元素在 初始化元素的个数
                int count = intListBag.getCount(intList.get(iniNum));
                for (int m = 0; m < count; m++) {
                    resultList.add(intList.get(i));
                }
                // 用于区分该 元素已被添加过
                uniqueList.add(intList.get(i));
                //跳过这么多个数
                iniNum= iniNum + count;
            }
        }
        System.out.println("========uniqueList=========");
        System.out.println(uniqueList);
        //打印 uniqueList结果 [3, 2, 1, 0]
        System.out.println("========resultList=========");
        System.out.println(resultList);
        //打印 resultList 结果 [3, 3, 3, 2, 2, 1, 0, 0]

    }
}
  1. 这是另一种
import java.util.List;
import com.alibaba.fastjson.JSONArray;

public class Test {
    public static void main(String[] args) {
        String arryStr="[{\"x\":3,\"y\":2},{\"x\":2,\"y\":2},{\"x\":2,\"y\":3},{\"x\":1,\"y\":3},{\"x\":2,\"y\":6},{\"x\":1,\"y\":2}]";
        List<Coordinates> intList =  JSONArray.parseArray(arryStr, Coordinates.class);
        //初始化数据 [Coordinates(x=3, y=2), Coordinates(x=2, y=2), Coordinates(x=2, y=3), Coordinates(x=1, y=3), Coordinates(x=2, y=6), Coordinates(x=1, y=2)]
        //List<Coordinates> resultList = Lists.newArrayListWithCapacity(intList.size());
        System.out.println("========intList=========");
        System.out.println(intList);
        int j=0;
        System.out.println("========intList.size()/2========="+intList.size()/2);
        for(int i = intList.size()-1;i>= (intList.size()/2);i--){
            Coordinates t = new Coordinates();
            t.setX(intList.get(i).getX());
            t.setY(intList.get(i).getY());
            intList.get(i).setX(intList.get(j).getX());
            intList.get(j).setX(t.getX());
            j++;
        }
        System.out.println("========resultList=========");
        System.out.println(intList);
        //打印结果 [Coordinates(x=1, y=2), Coordinates(x=2, y=2), Coordinates(x=1, y=3), Coordinates(x=2, y=3), Coordinates(x=2, y=6), Coordinates(x=3, y=2)]

    }
}

//坐标类
import lombok.Data;
@Data
public class Coordinates {
    private Integer x;
    private Integer y;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值