code: public static Geometry lineIntersector(Geometry inputLines, Geometry clipper) throws IllegalArgumentException {
          if(inputLines == null||clipper == null){
              return null;
          }
          if(inputLines.getDimension()==1){
          MCIndexNoder mCIndexNoder = new MCIndexNoder();
          mCIndexNoder.setSegmentIntersector(new IntersectionAdder(ROBUST_INTERSECTOR));        
          mCIndexNoder.computeNodes(getSegments(inputLines, clipper));
          Collection nodedSubstring = mCIndexNoder.getNodedSubstrings();
          GeometryFactory gf = inputLines.getFactory();
          ArrayList<LineString> linestrings = new ArrayList<LineString>(nodedSubstring.size());
          for (Iterator it = nodedSubstring.iterator(); it.hasNext();) {
              SegmentString segment = (SegmentString) it.next();
              //We keep only the segments of the input geometry
              if((Integer)segment.getData()==0){
                  Coordinate[] cc = segment.getCoordinates();
                  cc = CoordinateArrays.atLeastNCoordinatesOrNothing(2, cc);
                  if (cc.length > 1) {
                      linestrings.add(gf.createLineString(cc));
                  }
              }
          }
          if (linestrings.isEmpty()) {
              return inputLines;
          } else {
              return gf.createMultiLineString(linestrings.toArray(new LineString[0]));
          }}
          throw new IllegalArgumentException("Split a " + inputLines.getGeometryType() + " by a " + clipper.getGeometryType() + " is not supported.");
      }
docs: Split a lineal geometry by a another geometry
  @param inputLines
  @param clipper
  @return